FireFox 4-5b中的RegExp

时间:2011-07-17 23:12:52

标签: javascript regex firefox

为什么这个正则表达式在FF中不起作用? /^\#q=(.*){1,50}\&type=([a-zA-Z]{5})\&offset=([0-9]{1,8})$/

在所有浏览器中执行FF它都很好。谢谢

2 个答案:

答案 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})

您可能不需要同时使用它们。