ES6 正则扩展
2017-02-28 18:59
239 查看
RegExp 构造函数
ES5 的参数有两种情况
var regex= new RegExp('xyz','i')
var regex= new (/xyz/i)
ES5不允许使用第二个参数
ES6
var regex= new RegExp('xyz','ig')
var regex= new (/xyz/ig)
var regex = new (/xyz/ig,'i')
使用两个参数后面一个会覆盖掉前面的修饰符
u修饰符
“ . ”字符在正则表达式中, 含义是除了换行符以外的任意单个字符对于大于0xFFFF的Unicode 字符,点字符不能识别 需要加上 u 修饰符
> var s='\u{10f50}' undefined > s '�' > /^.$/.test(s) false > /^.$/u.test(s) true >
\u{3} “{}”正则中会被解读为量词,需要加u修饰符
y修饰符
直接上代码> var s='aaa_aa_a' > var reg=new RegExp(/a+/g) > reg.exec(s) [ 'aaa', index: 0, input: 'aaa_aa_a' ] > reg.exec(s) [ 'aa', index: 4, input: 'aaa_aa_a' ] > reg.exec(s) [ 'a', index: 7, input: 'aaa_aa_a' ] > var regy=new RegExp(/a+/y) undefined > regy.exec(s) [ 'aaa', index: 0, input: 'aaa_aa_a' ] > regy.exec(s) null > regy.exec(s) [ 'aaa', index: 0, input: 'aaa_aa_a' ] > regy.exec(s) null > var r=/a+_/y undefined > r.exec(s) [ 'aaa_', index: 0, inpu 4000 t: 'aaa_aa_a' ] > r.exec(s) [ 'aa_', index: 4, input: 'aaa_aa_a' ] > r.exec(s)
参数的匹配会设置lastIndex值 为空时 设置为0
y参数 为 lastIndex 开始匹配 隐含^的意思
> 'x##'.split(/#/y) [ 'x##' ] > '##x'.split(/#/y) [ '', '', 'x' ] > 'aaaa'.replace(/a/y,'hb') 'hbaaa' > 'aaaa'.replace(/a/yg,'hb') 'hbhbhbhb' > 'aaaa'.match(/a/y) [ 'a', index: 0, input: 'aaaa' ] > 'aaaa'.match(/a/yg) [ 'a', 'a', 'a', 'a' ]
自己领会
新增属性
sticky属性 表示正则是否设置了y修饰符flags属性 返回正则的修饰符