ES6入门——正则的扩展

1、RegExp构造函数

在ES5中,RegExp构造函数的参数有两种情况。第一种情况是参数是字符串,这时第二个参数表示正则表达式的修饰符;第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。但是,ES5不允许此时使用第二个参数,添加修饰符,否则会报错

var regex = new RegExp('xyz','i');
//等价于
var regex = /xyz/i;

var regex = new RegExp(/xyz/i);
//等价于
var regex = /xyz/i;

var regex = new RegExp(/xyz/,'i');  //报错

ES6改变了这种行为,如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

 

2、字符串的正则表达式

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

 

3、U修饰符

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

 

4、y修饰符

除了u修饰符,ES6还为正则表达式添加了y修饰符,叫做“粘连(sticky)”修饰符。y修饰符的作用域g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于g修饰符只要剩余位置中存在匹配就可以,而y修饰符确保匹配必须从剩余的第一个位置开始,这也是“粘连”的涵义。

 

5、sticky属性

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

 

6、flags属性

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

 

7、RegExp.escape()

字符串必须转义,才能作为正则模式。

 

8、s修饰符:dotAll模式

很多时候我们希望匹配的是任意单个字符,这时有一个提案,就是引入/s修饰符,使得 . 可以匹配任意单个字符。这被称为dotAll模式,即点(dot)代表一切字符。所以,正则表达式还引入了一个dotAll属性,返回一个布尔值,表示该正则表达式是否处在dotAll模式中。

 

posted @ 2017-12-07 21:27  Z皓  阅读(198)  评论(0编辑  收藏  举报