4

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

给定以下 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?

4

1 回答 1

16

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

您不需要g此处的标志,因此只需将其删除:

var regexo = new RegExp('^'+opener+'$');
于 2013-10-18T11:50:19.400 回答