正则的扩展

1.RegExp构造函数

ES6,如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。(ES5下会报错)

2.字符串的正则方法

字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()和split()。

3.u修饰符

ES6对正则表达式添加了u修饰符,含义为“Unicode模式”,用来正确处理大于\uFFFF的Unicode字符。也就是说,会正确处理四个字节的UTF-16编码。

4.y 修饰符

y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。
不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。

5.sticky属性

与y修饰符相匹配,ES6的正则对象多了sticky属性,表示是否设置了y修饰符。

6.flags属性

ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。

7.RegExp.escape()

字符串必须转义,才能作为正则模式。使用静态方法RegExp.escape()可以该简化步骤,不再需要“\”进行转义。(有安全隐患,可能废除)

8.s 修饰符:dotAll 模式

正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是行终止符(line terminator character)除外。
以下四个字符属于”行终止符“。
U+000A 换行符(\n)
U+000D 回车符(\r)
U+2028 行分隔符(line separator)
U+2029 段分隔符(paragraph separator)

9.后行断言

avaScript 语言的正则表达式,只支持先行断言(lookahead)和先行否定断言(negative lookahead),不支持后行断言(lookbehind)和后行否定断言(negative lookbehind)。
ES6有一个提案,引入后行断言。

10.Unicode属性类

ES6有一个提案,引入了一种新的类的写法\p{...}和\P{...},允许正则表达式匹配符合Unicode某种属性的所有字符。