ES6之正则的扩展

正则构造函数一般都是两个参数,ES6之前如果只有一个正则表达式的参数:

var reg = new RegExp(/a/g);

这时候是不允许再加一个参数:

var reg = new RegExp(/a/g, i);这是错误的,ES6是允许的,且第二个参数会覆盖之前的模式。

ES6把字符串使用正则的四个方法都变成调用正则对象RegExp上的方法,使用的时候是没什么区别,只是内部调用改变了,比如调用math方法是调用RegExp的prototype上面的方法。

新增了u修饰符,针对UTF-16的Unicode使用的。然后也增加了unicode的属性,表示是否是标志u。

新增了y修饰符,叫粘连sticky属性。也是全局匹配,解释说后一次匹配都从上一次匹配成功的下一个位置开始,增加了新的修饰符,相应的也增加了sticky属性。研究了一下,并没有理解,希望有人能指点一下。

我们可以用source获取正则的表达式,ES6新增了flags属性获取标志符igmuy等。

ES2018对正则新增了一些,这边就了解到ES6里面:

s修饰符,是2018引入的,为了解决行终止符\n\r等,同时还引入了dotAll属性返回布尔值。

ES2018还引入了后行断言,之前只支持先行断言和先行否断言。先行断言的意思是只有在某个之前的才匹配,先行否断言是只有不在某个之前才匹配。我觉得这个可以好好了解一下。

Unicode属性类,\p{...}和\P{...},允许匹配符合Unicode某种属性的所有字符。

具名匹配,采用圆括号提前的时候,每一组的含义不明确,ES2018引入了具名组匹配,便于阅读和引用:

无具名:/(\d{4})-(\d{2})-(\d{2})/

具名:/(?\d{4})-(?\d{2})-(?\d{2})/

引用的时候跟json一样,顺序改变也不影响。

新增提案String.prototype.matchAll方法,一次性取出所有匹配,返回一个遍历器。

其实简单正则理解一下就够用了,至于扩展和一些几乎不用到的了解一下就够了,真的需要使用的时候再去研究。

转载于:https://juejin.im/post/5cd3e2ad51882535806130bc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值