为什么RegExp.test()不一致? [英] Why is RegExp.test() not consistent?
本文介绍了为什么RegExp.test()不一致?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不明白为什么javascript RegExp.test()
方法每次调用时都不会返回相同的结果。
I do not understand why the javascript RegExp.test()
method do no return the same result every time I call it.
给出以下javascript变量
Given the following javascript variables
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中测试了它,结果相同。
I tested it in Firefox 24.0 and IE8 with the same strange result.
为什么结果 true,false,true
而不是 true,true,true
?
推荐答案
那是因为你使用 g
标志。它将regexp对象转换为迭代器,其状态随每次调用而变化。
That's because you use the g
flag. It turns the regexp object into an iterator, whose state changes with each call.
您不需要 g
在这里标记,所以只需删除它:
You don't need the g
flag here, so just remove it :
var regexo = new RegExp('^'+opener+'$');
这篇关于为什么RegExp.test()不一致?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文