我不明白为什么每次调用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
?
答案 0 :(得分:11)
那是因为你使用了g
标志。它将regexp对象转换为迭代器,其状态随每次调用而变化。
此处不需要g
标记,因此请将其删除:
var regexo = new RegExp('^'+opener+'$');