正则

定义

正确的规则,它是专门处理字符串的

正则分为修饰符和元字符【两次元字符,和特殊元字符】,其中两个斜杠中属于元字符,斜杠后面是属于修饰符

# 如何创建一个正则

  • 通过字面量方式来创建
let reg = /\d/
  • 通过实例化的方式来创建,通过new关键字执行正则类,返回一个正则的实例;如果你创建的正则中有变量,我们必须通过实例化的方式来创建,通过实例化的方式创建,第一个参数式元字符,第二个参数式修饰符
let regExp = new RegExp(str);

# 正则的方法

  • test

    验证(校验创建的字符串,是否如何正确的规则,如果匹配的话返回true,如果不匹配返回false)

  • exec

    捕获(不会之前会先拿正则匹配传入的字符串,如果匹配成功,返回字符串的详细信息,如果匹配不成功,返回null)

正则中常用的修饰符

i忽略大小写
m多行匹配
g全局匹配

正则中常用的量词元字符

*0个到多个
+1个到多个
0个或一个(有或没有)
{n}匹配到n个
{n,}匹配n个到多个
{n,m}匹配n到m个

正则中常用的特殊元字符

\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中的任意一个字符
()分组捕获,提高优先级,分组引用
(?:)取消分组捕获
(?=)正向预查
(?!)负向预查

普通元字符

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

正则中的捕获

正则中的捕获:exec会先进行校验,如果校验成功,返回字符串的详细信息,如果校验失败返回null

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

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

正则的懒惰性

每次捕获只捕获到第一次匹配到的内容,剩余的内容不在捕获了

解决办法

加一个量词元字符,每次捕获按照最大值来捕获

var reg = /\d+/;

正则的贪婪性

每次捕获都全部捕获出来,是因为有两次元字符的存在

解决方法

需要在两次元字符的后面加一个?,这样的话每次捕获都按最少的捕获

var reg = /\d{2,4}?/;

正则中的小括号

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

正则中的中括号

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

转载于:https://www.cnblogs.com/mengxiangji/p/10698085.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值