代码如下:
var reg=/\b\w+\b/g;
reg.test('abcd'); //true or false?
'abcd'.match(reg);
为什么浏览器运行出来,对同一个串测试,时而false,时而true呢?
但是match的结果是不变的。
代码如下:
var reg=/\b\w+\b/g;
reg.test('abcd'); //true or false?
'abcd'.match(reg);
为什么浏览器运行出来,对同一个串测试,时而false,时而true呢?
但是match的结果是不变的。
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
var reg=/\b\w+\b/g; // 1
reg.test('abcd'); // 2
准确描述:重复执行第二行的时候,奇数次结果为true,偶数次结果为false。
如果我们把代码改成:
/\b\w+\b/g.test('abcd');
执行的结果就一直为true了。所以我们有理由怀疑是复用RegExp对象带来的问题。
去搜索了一圈,在Mozilla的网站上,找到这么一句:
因为例子中的正则带了
g
,所以每次调用test
方法会先获取一个隐藏属性lastIndex
,会跳过上次已经搜索过的部分。