为什么.test()的结果会发生变化?

时间:2016-07-02 03:19:03

标签: javascript regex

我的代码如下所示:



function testfunc() {

  var exp = /aa/gi;

  var ret = [];

  var test = ['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa'];

  for (var j = 0; j < test.length; j++) {

    ret.push(exp.test(test[j]));

  }

  console.log(ret);

}

testfunc();
&#13;
&#13;
&#13;

而不是返回

[true, true, true, true, true, true]

它返回

[true, false, true, false, true, false] 

我不明白为什么!

我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

由于lastIndex

,您必须删除g修饰符

匹配下一个对象时,将从上次使用的索引开始,而不是0

function testfunc() {
  var exp = /aa/i;
  var ret = [];
  var test = ['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa'];
  for (var j = 0; j < test.length; j++) {
    ret.push(exp.test(test[j]));
  }
  console.log(ret);
}
testfunc();