[JS]正则表达式

介绍

正则表达式是定义匹配字符串的规则, 在JS中, 正则表达式也是对象, 通常用于查找或替换符合规则的文本

许多语言都支持正则表达式, 在前端中常见的场景就是表单验证和敏感词替换

语法

正则字面量 / /

const str = '好好学习,天天向上'
// 1.定义规则:  
const reg = /好/

// 2.匹配规则 (常用)
// 判断是否有符合规则的字符串, 返回布尔值
reg.test(str) // true

// 3.匹配规则
// 在指定字符串中搜索匹配, 成功返回数组, 失败返回null
reg.exec(str)

元字符

所谓元字符就是一些有特殊含义的字符, 可以极大的提高正则的灵活性, 为了方便学习, 根据作用不同, 元字符可以分为边界符, 量词和字符类

正则测试工具: 在线正则表达式测试

边界符

边界符用来规定字符串 以什么开头, 以什么结尾, 如果^ 和 $ 一起使用表示精确匹配

{{name}}: 占位符, 表示这里会以name实际的内容进行填充

/哈/.test('哈哈')   // true
/哈/.test('二哈')   // true
/^哈/.test('哈')    // true
/^哈/.test('哈哈')  // true
/^哈/.test('二哈')  // false
/^哈$/.test('哈哈') // false 精确匹配
/^哈$/.test('哈')   // true 精确匹配

量词

量词用来规定字符出现的次数

// *号 类似 >=0
/^哈*$/.test('哈') // true
/^哈*$/.test('哈哈') // true

// +号 类似 >=1
/^哈+$/.test('哈') // true
/^哈+$/.test('哈哈') // true

// ?号 类似 0||1
/^哈?$/.test('哈') // true
/^哈?$/.test('哈哈') // false

// {n}号 类似 固定次数
/^哈{2}$/.test('哈') // false
/^哈{2}$/.test('哈哈') // true

// {n,}号 类似 >=n
/^哈{2}$/.test('哈') // false
/^哈{2}$/.test('哈哈') // true

// {n,m}号 类似 >=n次&&<=m次
// 逗号两侧千万不要加空格
/^哈{2,4}$/.test('哈') // false
/^哈{2,4}$/.test('哈哈') // true

字符类

表示特殊含义的字符

// [ ] 多个选项选一个
/[abc]/.test('a')  // true
/[abc]/.test('c')  // true
/[abc]/.test('d')  // false
/[abc]/.test('adp')  // true
// 只选一个 (精确匹配)
/^[abc]$/.test('adp') // false 
// [ ]里面使用 - 连字符 
// 可选择的范围
/[a-zA-Z0-9]/.test('p') // true
// .匹配除了换行符之外的任何单个字符
/./.test('p') // true
// [ ]里面使用 ^ 取反符号 
/[^a-zA-Z]/.test('p')  // false
/[^a-zA-Z]/.test('哈') // true

修饰符

修饰符约束正则执行的某些细节行为, 如区分大小写, 是否支持全局匹配等

// i是 ignore 的缩写, 可以设置不区分大小写
/a/i.test('a') // true
/a/i.test('A') // true

// g是 global 的缩写, 可以设置全局匹配
const str = 'A是开始, A也是结束'
/A/.test(str)   // 默认只匹配第一个A
/A/g.test(str)  // 选中所有A
// 作用: 用一些字符替换另一些字符
// 返回替换后的字符串
let result = '你是好人',replace(/好人/,'**')  // 你是**

常见规则

任意多个字符:[a-zA-Z]+

任意空白字符和任意非空白字符: [\s\S]*

匹配全部的<img: /<img /g

分组:正则表达式中()包起来的内容表示一个分组,可以通过分组来提取自己想要的内容.

多次的replace

正则修改:var text=/{{\s*(需要匹配的值)\s*}}/;

就可以实现多次替换了

常用密码正则: /^[0-9a-zA-Z]{8,20}$/ } //0-9的数字,大写小写字母,长度8-20位

常用验证码: /^\d{6}$/ /d代表1位,{6}代表长度为6 //长度6位的字符

简单的手机号: /^1\d{10}$/ } //第一位是数字1,后面是10个数字

常用手机号和密码的正则匹配: 陪陪不成功返回null

let ihoneValidation = /^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/

let pasValidation = /^[0-9a-zA-Z]{8,20}$/

console.log(pasValidation.exec(this.password));

console.log(ihoneValidation.exec(this.ihone));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/761296.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

17964 水桶打水

这是一个优先队列&#xff08;堆&#xff09;和贪心算法的问题。我们可以使用C来解决这个问题。 首先&#xff0c;我们需要创建一个优先队列来存储每个水龙头的结束时间。然后&#xff0c;我们将所有人的打水时间从小到大排序。接着&#xff0c;我们将每个人分配给最早结束的水…

深入解析Flowable:工作流与业务流程管理引擎

深入解析Flowable&#xff1a;工作流与业务流程管理引擎 引言 在数字化时代&#xff0c;企业对流程自动化的需求日益增长。有效的工作流和业务流程管理系统可以帮助组织提高生产力、优化资源分配以及增强决策支持。Flowable是一款开源的工作流和业务流程管理&#xff08;BPM&a…

MeterSphere v3.0全新启航,让软件测试工作更简单、更高效

2024年7月1日&#xff0c;MeterSphere v3.0版本正式发布。MeterSphere v3.0是新一代的测试管理和接口测试工具&#xff0c;致力于让软件测试工作更简单、更高效&#xff0c;不再成为持续交付的瓶颈。 在团队协作方面&#xff0c;针对目前企业软件测试团队所面临的测试工具不统…

springboot项目requestId设置、统一responsebody封装以及切面

利用filter设置requestId import cn.hutool.core.lang.UUID; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.s…

绿联NAS进入SSH的方法

1. 进入【设备管理】&#xff0c;在调试功能中&#xff0c;开启远程调试功能&#xff0c;发送手机验证码&#xff0c;你将得到一个3天有效期的验证码&#xff0c;就是ssh登录密码。 2. 使用终端工具或ssh命令直接登录SSH。 端口是922&#xff0c;账号是&#xff1a;root&#…

界面组件DevExpress WPF v24.1 - 增强的可访问性 UI自动化

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

全网最详细的 gin框架请求数据绑定Bind 源码解析 -- 帮助你全面了解gin框架的请求数据绑定原理和方法

在gin框架中&#xff0c;我们可以将多种请求数据&#xff08;json, form,uri&#xff0c;header等&#xff09;直接绑定到我们定义的结构体&#xff0c;底层是通过反射方式获取我们定义在结构体上面的tag来实现请求数据到我们的结构体数据的绑定的。 在gin的底层有2大体系的数据…

华为HCIP Datacom H12-821 卷19

1.多选题 如图所示,RTA 的 GE0/0/0、GE0/0/1 接口分别连接部门 1 和 2,其网段分别为 10.1.2.0/24、 10.1.3.0/24 网段,为限制部门 1 和 2 之间的相互访问,在 RTA 上部署 traffic-filter,以下哪些部署方式是正 确? A、配置 ACL3000 拒绝源为 10.1.2.0/24 目的为 10.1.3.0…

matlab仿真 通信信号和系统分析(上)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第三章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; 一、求离散信号卷积和 主要还是使用卷积函数conv&#xff0c;值得注意的是&#xff0c;得到的卷积和长度结果为81&#xff0…

【正点原子K210连载】第十四章 按键输入实验 摘自【正点原子】DNK210使用指南-CanMV版指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DNK210开发板 2&#xff09;平台购买地址https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第十四章 按键输入实…

短信验证码API的防护策略?怎么优化更新?

短信验证码API的定制化服务怎么样&#xff1f;如何选择API服务&#xff1f; 短信验证码API成为保护用户账户和数据的重要工具&#xff0c;对短信验证码API的防护也显得尤为重要。AoKSend将探讨短信验证码API的防护策略&#xff0c;帮助企业和开发者确保系统的安全性和可靠性。…

FatFs(文件系统)

1官网 FatFs - 通用 FAT 文件系统模块 (elm-chan.org) FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 模块是按照 ANSI C &#xff08;C89&#xff09; 编写的&#xff0c;并且与磁盘 I/O 层完全分离。因此&#xff0c;它独立于平台。它可以集成到资源有限…

2024 vue3入门教程:01vscode终端命令创建第一个vue项目

参考vue官网手册&#xff1a;https://cn.vuejs.org/guide/quick-start.html 一、找个盘符&#xff0c;新建文件夹存储以后得vue项目 我的是e盘下创建了vueproject 二、使用vscode打开存储vue项目的文件夹 因为我生成过项目&#xff0c;所以有文件&#xff0c;你们初次是没有…

【第五节】C/C++数据结构之图

目录 一、图的基本概念 1.1 图的定义 1.2 图的其他术语概念 二、图的存储结构 2.1 邻接矩阵 2.2 邻接表 三、图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四、最小生成树 4.1 最小生成树获取策略 4.2 Kruskal算法 4.3 Prim算法 五、最短路径问题 5.1 Dijkstra算…

WPF----自定义滚动条ScrollViewer

滚动条是项目当中经常用到的一个控件&#xff0c;大部分对外项目都有外观的需求&#xff0c;因此需要自定义&#xff0c;文中主要是针对一段动态的状态数据进行展示&#xff0c;并保证数据始终在最新一条&#xff0c;就是需要滚动条滚动到底部。 1&#xff0c;xaml中引入 <…

【大模型系列】Language-Vision Transformer(LaVIT, ICLR2024)

Title&#xff1a;Unified Language-Vision Pretraining in LLM with Dynamic Discrete Visual TokenizationPaper&#xff1a;https://arxiv.org/abs/2309.04669Github&#xff1a;https://github.com/jy0205/LaVITAuthor&#xff1a;Yang Jin&#xff0c; 北大&#xff0c;快…

Android Native 客户端属性配置系统使用说明

Android Native 客户端属性配置系统使用说明 背景和问题现代 android 开发基本都基于 gradle 属性设置来进行定制化编译,随着项目的迭代,工程结构越发复杂,配置属性越来越多,越来越多的配置使得上手难度越来越大。 解决方案设计一般而言,在 android 开发中,Gradle 属性系…

141个图表,完美展示数据分类别关系!

本文介绍使用Python工具seaborn详细实现分类关系图表&#xff0c;包含8类图141个代码模版。 分类关系图表用于展示数字变量和一个或多个分类变量之间的关系&#xff0c;可以进一步分为&#xff1a;箱形图&#xff08;box plot&#xff09;、增强箱形图&#xff08;enhanced bo…

阿里云物联网应用层开发:第二部分,云产品流转

文章目录 1、云产品流转概述2、我们需要创建多少个云产品流转&#xff1f;3、阿里云物联网平台产品云流转实现3-1 创建数据源3-2 创建数据目的3-2 创建解析器,并关联数据、编写脚本 1、云产品流转概述 云产品流转可以看成是一个转发的功能&#xff0c;阿里云官方的解释是&…

【操作与配置】Xshell安装使用

Xshell是一款功能强大的远程管理工具&#xff0c;主要用于通过SSH&#xff08;Secure Shell&#xff09;、TELNET等协议连接和管理远程服务器。它支持多种会话管理、脚本编写、端口转发等功能&#xff0c;适合系统管理员和开发者使用。 安装 官网下载&#xff1a;家庭/学校免费…