第五章 - 正则增强
构造函数增强
允许覆写修饰符,如new RegExp(someRegex, 'ig')
字符串上的正则方法
原先match、replace等可以调用正则的方法在String的原型上,现在都重定向到RegExp原型上的对应方法了。
修饰符相关
-
u修饰符表示Unicode模式,可以正确处理大于\uFFFF的Unicode字符。
-
y修饰符表示粘连,与g类似,但是要求匹配必须从剩余的第一个位置开始,而不是后面的任意位置。可以通过RegExp对象上的sticky属性来了解是否使用了y修饰符。
-
RegExp对象上的source属性是正则表达式正文,flags属性的修饰符
-
s修饰符使得正则中的点号(任意字符点)可以表示\n、\r等行终止符
向后看零宽断言
众所周知,JS正则的零宽断言只支持向前看。现在有提案讨论准备支持向后看的零宽断言了。
捕获组相关
-
具名捕获组
之前括号捕获组只能根据$i按出现顺序指代,现在可以给捕获组命名了,写作:
(?<name>xxx)
命名后使用matchObj.groups[name]访问,使用
$<name>
指代。 -
具名捕获+解构赋值
let { groups: {one, two} } = /(?<one>xxx)(?<two>yyy)/
-
复用具名捕获组
正则可以写成
(?<name>xxx)\k<name>
,即用\k<name>
复用前面写好的捕获组。