我不明白为什么RegExp.test()每次调用它时javascript 方法都不会返回相同的结果.
给出以下javascript变量
var opener = '<span[^>]*>';
var regexo = new RegExp('^'+opener+'$', "g");
Run Code Online (Sandbox Code Playgroud)
我做以下事情:
alert(regexo.test('<span class="outer">')); // true
alert(regexo.test('<span class="inner">')); // false
alert(regexo.test('<span class="inner">')); // true
Run Code Online (Sandbox Code Playgroud)
我在Firefox 24.0和IE8中测试了它同样奇怪的结果.
为什么结果true, false, true而不是true, true, true?
Den*_*ret 11
那是因为你使用了g旗帜.它将regexp对象转换为迭代器,其状态随每次调用而变化.
你不需要g这里的旗帜,所以只需删除它:
var regexo = new RegExp('^'+opener+'$');
Run Code Online (Sandbox Code Playgroud)