ES6(ECMAScript 6)笔记4-正则的扩展

RegExp构造函数

ES5中RegExp构造函数值接受字符串作为参数,而ES6支持真个表达式作为参数。

1
var reg = new RegExp(/xyz/i);

如果使用RegExp构造函数的第二个参数指定修饰符,则返回的表达式会忽略原有的修饰符,使用新指定的。

1
2

y修饰符

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

1
2
3
4
5
6
7
8
9
var s = "aaa_aa_a";
var r1 = /a+/g;
var r2 = /a+/y;

r1.exec(s) // ["aaa"]
r2.exec(s) // ["aaa"]

r1.exec(s) // ["aa"]
r2.exec(s) // null

sticky属性

表示是否设置了y修饰符

1
2
var r = /hello\d/y;
r.sticky // true

flags属性

会返回正则表达式的修饰符

1
2
3
4
5
6
7
8
9
// ES5的source属性
// 返回正则表达式的正文
/abc/ig.source
// "abc"

// ES6的flags属性
// 返回正则表达式的修饰符
/abc/ig.flags
// 'gi'

u修饰符 点修饰符 Unicode字符表示法 量词 预定义模式 i修饰符