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

javascript正则test结果交替出现疑问

javascript正则test结果交替出现疑问

当年话下 2019-03-30 18:15:21
代码如下:var reg=/\b\w+\b/g;reg.test('abcd'); //true or false?'abcd'.match(reg);为什么浏览器运行出来,对同一个串测试,时而false,时而true呢?但是match的结果是不变的。
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

var reg=/\b\w+\b/g; // 1
reg.test('abcd'); // 2
准确描述:重复执行第二行的时候,奇数次结果为true,偶数次结果为false。
如果我们把代码改成:
/\b\w+\b/g.test('abcd');
执行的结果就一直为true了。所以我们有理由怀疑是复用RegExp对象带来的问题。

去搜索了一圈,在Mozilla的网站上,找到这么一句:

test called multiple times on the same global regular expression instance will advance past the previous match.

因为例子中的正则带了g,所以每次调用test方法会先获取一个隐藏属性lastIndex,会跳过上次已经搜索过的部分。


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

添加回答

举报

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