JS正则表达式写法和用法

JS正则表达式写法和用法

1. 定义

javascript 正确的规则,它是专门处理字符串的
正则分为修饰符和元字符【两次元字符,和特殊元字符】,其中两个斜杠中属于元字符,斜杠后面是属于修饰符

2.如何创建一个正则

  • 通过字面量方式来创建 let reg = /\d/

let reg = /\d/

  • 通过实例化的方式来创建,通过new关键字执行正则类,返回一个正则的实例;如果你创建的正则中有变量,我们必须通过实例化的方式来创建,通过实例化的方式创建,第一个参数式元字符,第二个参数式修饰符

let regExp = new RegExp(str);

3.正则的方法

  • test

验证(校验创建的字符串,是否如何正确的规则,如果匹配的话返回true,如果不匹配返回false)
例子:
let reg = /[a-z]/
reg.test(‘a’) // true
reg.test(999) //false

  • exec

捕获(不会之前会先拿正则匹配传入的字符串,如果匹配成功,返回字符串的详细信息,如果匹配不成功,返回null)
例子:
let reg = /[a-z]/
reg.exec(‘a’) //[0: “a”, groups: undefined,index: 0,input: “a”]
reg.exec(99) // null

4.正则中常用的修饰符

i忽略大小写
m多行匹配
g全局匹配
5.正则中常用的量词元字符
*0个到多个
+1个到多个
0个或一个(有或没有)
{n}匹配到n个
{n,}匹配n个到多个
{n,m}匹配n到m个
6.正则中常用的特殊元字符
\d匹配0-9至之间的任意一个数字
\D除了0-9之间的任意字符
\w匹配除了数字、字母、下划线,中的任意一个字符
\W除了数字、字母、下划线,以外的任意字符
\s匹配一个空白字符
\S除了空白字符意外的其他字符
\b匹配一个边界
\B除了边界以外的其他字符
\n匹配一个换行符
.匹配除了换行符以外的其他字符
^匹配一个开始的符号
$匹配一个结束的符号
竖杠或者
[]或者,只能取其中一个
x\yx,y中的任意一个字符
[xy]x或y中的任意一个字符
[^xyz]非,除了xyz中的任意字符
[a-z]范围,a-z中的任意一个字符
()分组捕获,提高优先级,分组引用
(?😃取消分组捕获
(?=)正向预查
(?!)负向预查
7.普通元字符

在正则当中,字面量方式创建的,两个斜杠中的,除了特殊元字符和量词元字符意外的都叫做普通元字符

8.正则中的捕获

正则中的捕获:exec会先进行校验,如果校验成功,返回字符串的详细信息,如果校验失败返回null
修饰符g标识全局匹配,会按照字符串从左到右的顺序进行匹配
lastIndex:下一次按照这个索引的位置进行捕获
注意:用正则取校验的时候,如果你家g全局校验的话,每次校验的内容都不一样

  • 如果可以匹配,获取的结果是一个数组,如果不匹配获取的结果是null
  • 如果我们旨在匹配的时候,想要获取大正则的部分信息,我们可以把这部分使用小括号抱起来,形成一个数组,这样在捕获的时候,不仅可以把大正则匹配的信息捕获到,而且还单独的把小分组匹配的部分信息捕获到了(分组捕获)
  • 有时候写小分组不是为了捕获信息,只是为了改变优先级或者分组引用,此时我们可以在分组的前面加上?:,代表只去匹配,但是不把这个分组内容捕获

9.正则的懒惰性

每次捕获只捕获到第一次匹配到的内容,剩余的内容不在捕获了
||
解决办法
||
加一个量词元字符,每次捕获按照最大值来捕获 var reg = /\d+/;

10.正则的贪婪性

每次捕获都全部捕获出来,是因为有两次元字符的存在
||
解决方法
||
需要在两次元字符的后面加一个?,这样的话每次捕获都按最少的捕获 var reg = /\d{2,4}?/;

11.正则中的小括号

  • 提高优先级
  • 分组捕获
  • 分组引用

12.正则中的中括号

  • 中括中出现的元字符一般都是代表本身含义的
  • 中括号中出现的两位数,不是两位数,而是两位数中的任意一个
  • 正则中的中括号表示,括号中的字符取任意一个

13.字符串.match,返回满足正则的内容,返回类型为数据

  • str = ‘1a2a3’;
  • let re = /a/g
  • console.log(str.match(re));
  • 返回为:[ ‘a’, ‘a’ ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值