为什么这个正则表达式在FF中不起作用? /^\#q=(.*){1,50}\&type=([a-zA-Z]{5})\&offset=([0-9]{1,8})$/
在所有浏览器中执行FF它都很好。谢谢
答案 0 :(得分:0)
Firefox 5报告调试控制台中的正则表达式过于复杂。我认为这个问题是由这个有点含糊不清的部分引起的。无论你想匹配多少个字符,都会发生1-50次。正如亚历克斯建议的那样,改变它会好得多:
(.*){1,50}
Chrome实际上会尝试匹配第二个字符串。
无论如何,您可以通过将正则表达式更改为此来修复正常表达式(我认为这样做符合您的要求):
/^#q=(.){1,50}&type=([a-zA-Z]{5})&offset=([0-9]{1,8})$/
您可以在此处测试或尝试:http://jsfiddle.net/jfriend00/wUHKV/
答案 1 :(得分:0)
我认为您的问题在开头是(.*)
。我认为,实际上它正在抓取#q=
之后的所有内容,在字符串中不留下任何内容来查找表达式的其余部分。我原以为所有的浏览器都会以相同的方式解释正则表达式,但我猜不是。
尝试使用非贪婪的东西
(.*?)
或只使用bounds运算符
(.{1,50})
您可能不需要同时使用它们。