为什么RegExp.test()不一致?

时间:2013-10-18 11:49:31

标签: javascript regex

我不明白为什么每次调用javascript RegExp.test()方法都不会返回相同的结果。

给出以下javascript变量

var opener = '<span[^>]*>';
var regexo = new RegExp('^'+opener+'$', "g");

我执行以下操作:

alert(regexo.test('<span class="outer">')); // true
alert(regexo.test('<span class="inner">')); // false
alert(regexo.test('<span class="inner">')); // true

我在Firefox 24.0和IE8中测试了它,结果很奇怪。

为什么结果true, false, true代替true, true, true

1 个答案:

答案 0 :(得分:11)

那是因为你使用了g标志。它将regexp对象转换为迭代器,其状态随每次调用而变化。

此处不需要g标记,因此请将其删除:

var regexo = new RegExp('^'+opener+'$');