windowLocation = /(^\/t\d+)|(^\/post\?.+(post|reply){1})|(\/privmsg\?.+(post|reply){1})/g;
windowLocation.test(window.location.pathname+window.location.search);
此代码保留返回true
,如果再次尝试,则返回false
。我需要测试类似的路径名和搜索
/t12
/post?t=2&mode=reply
/privmsg?mode=reply&p=62
关于为什么这会一直返回true和false的任何建议?
答案 0 :(得分:2)
这是因为你的正则表达式中使用了/g
(全局)标志。如果你删除它会没事的。
windowLocation = /(^\/t\d+)|(^\/post\?.+(post|reply){1})|(\/privmsg\?.+(post|reply){1})/;
在正则表达式中使用全局标志时,lastIndex
属性在不同的调用RegExp#test(string)
之间保持不变。 lastIndex
属性是开始下一场比赛的索引。
上面的正则表达式我得到了:
windowLocation.test("/t12");
true
windowLocation.test("/t12");
true
windowLocation.test("/t12");
true