ES6 正则扩展

RegExp 构造函数

ES5 的参数有两种情况
  1. var regex= new RegExp('xyz','i')
  2. var regex= new (/xyz/i)
    ES5不允许使用第二个参数
ES6
  1. var regex= new RegExp('xyz','ig')
  2. var regex= new (/xyz/ig)
  3. 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, input: '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' ]

自己领会

新增属性

  1. sticky属性 表示正则是否设置了y修饰符
  2. flags属性 返回正则的修饰符

s修饰符

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

后行断言

V8 引擎4.9版已经支持,Chrome 浏览器49版打开”experimental JavaScript features“开关(地址栏键入about:flags),就可以使用这项功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值