为了账号安全,请及时绑定邮箱和手机立即绑定

js 正则表达式 g 参数的一个小问题

js 正则表达式 g 参数的一个小问题

莫回无 2019-03-20 18:19:15
如上图所示:第一种写法下面对 '$3.23' 识别为 false,但第二种,仅仅是去掉了一个参数 g,却通过了,没想明白。按理第一种也应该是通过的,请大家指导指导!
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

// 举个例子

var reg = /\w+/g;

reg.test('ab'); // true

console.log(reg.lastIndex); // 2

// 再执行一遍就是false了。

reg.test('ab'); // false

console.log(reg.lastIndex); // 0

// 再执行一遍就是true了。

reg.test('ab'); // true

console.log(reg.lastIndex); // 2

// 再执行一遍又是false了,如此反复,所以用g标识后,看起来很诡异。因为每次匹配开始位置变了。

reg.test('ab'); // false

// MDN 正则这块有这个知识点。不过现在好像打不开了...

7.2.4. 修饰符 g,对 exex 和 test 的影响
正则实例的 lastIndex 属性,表示尝试匹配时,从字符串的 lastIndex 位开始去匹配。
字符串的四个方法,每次匹配时,都是从 0 开始的,即 lastIndex 属性始终不变。
而正则实例的两个方法 exectest,当正则是全局匹配时,每一次匹配完成后,都会修改 lastIndex


查看完整回答
反对 回复 2019-04-02
  • 2 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信