您的位置:首页 > 其它

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属性 返回正则的修饰符

s修饰符

使 . 可以匹配任意单个字符

后行断言

V8 引擎4.9版已经支持,Chrome 浏览器49版打开”experimental JavaScript features“开关(地址栏键入about:flags),就可以使用这项功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: