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

代码如下:


var reg=/\b\w+\b/g;

reg.test('abcd'); //true or false?

'abcd'.match(reg);

为什么浏览器运行出来,对同一个串测试,时而false,时而true呢?

但是match的结果是不变的。


当年话下
浏览 452回答 1
1回答

DIEA

var reg=/\b\w+\b/g; // 1reg.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,会跳过上次已经搜索过的部分。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript