Javascript 正则表达式如何?

Javascript 正则表达式如何?,javascript,regex,Javascript,Regex,我需要正则表达式构建方面的帮助。有一行Javascript代码: navigator.userAgent.match(/Firefox\/3./) 现在它只匹配Firefox3.x。我需要的是一个表达式,它将匹配第三版的任何Firefox版本。意思是火狐3、4、5等 欢迎提出任何建议 如果您使用的是jQuery,我建议您看看:这个怎么样,例如: navigator.userAgent.match(/Firefox\/[3456789]./) 单独使用正则表达式是无法正确完成的。但您可以使用

我需要正则表达式构建方面的帮助。有一行Javascript代码:

 navigator.userAgent.match(/Firefox\/3./)
现在它只匹配Firefox3.x。我需要的是一个表达式,它将匹配第三版的任何Firefox版本。意思是火狐3、4、5等


欢迎提出任何建议

如果您使用的是jQuery,我建议您看看:

这个怎么样,例如:

navigator.userAgent.match(/Firefox\/[3456789]./)

单独使用正则表达式是无法正确完成的。但您可以使用正则表达式+一些代码来实现:

var m = navigator.userAgent.match(/Firefox\/(\d+)\./);
if (m && m[1] > 3) {
  // .... firefox 3 and above ...
}
<>注释:至于为什么不能单独使用正则表达式,请考虑Firefox/10

if(/Firefox\/([^012]|\d{2,})\./i.test(navigator.userAgent)){
    // What you want to do
}

因为您需要匹配除0、1和2版本之外的所有firefox。

现在我认为用户代理测试不受欢迎……不错,但随着Mozilla提高版本数的速度,这将持续大约一周半,当v10到来时:-您可以推荐,jquerybod本身不这样做:我们建议不要使用这个属性;请尝试使用功能检测,请参阅jQuery.support。尽管如此,它仍然是一个很好的指针。@paxdiablo是的,对于功能检测,不建议使用它,但是对于浏览器检测,它是可以的:因为$.browser使用navigator.userAgent来确定平台,它很容易受到用户的欺骗或浏览器本身的错误陈述。在可能的情况下,最好完全避免使用特定于浏览器的代码。$.support属性可用于检测对特定功能的支持,而不是依赖于$.Browser。仅使用正则表达式几乎可以做任何事情,但这并不是一个好主意。你通常会以畸形而告终。@paxdiablo:事实上,你不能用正则表达式解析非正则语法,尽管我承认,上述情况不是非正则的。然而,你可以用Perl6的递归正则表达式做任何事情,但我们这里不讨论Perl。我认为这是最明智的解决方案,因为我不想限制FF9的检查。实际上,你可以单独用正则表达式来做这件事,但我仍然认为上面的解决方案更容易理解:/Firefox\/[3-9]|\d\d\d*\./Regex在这种情况下会更好/Firefox\/[^012]+\./i.testnavigator.userAgentAgain,这对个位数的版本很好,但它会拒绝Firefox 10。在Firefox9之后,第一个可以使用的是Firefox33。即使Mozilla的版本号大大加快,这也需要一段时间:-它不会拒绝10;你认为加号的作用是什么?你可能想重新思考一下这个说法,+适用于之前的模式[^012]。换句话说,它将允许非0、1或2的任何字符中的一个或多个。因此,10将失败,11、12、…、32、40、41、42、199999等也将失败。我可能错了,这不是第一次了,但我不认为在这种情况下是这样。
var m = navigator.userAgent.match(/Firefox\/(\d+)\./);
if (m && m[1] > 3) {
  // .... firefox 3 and above ...
}
if(/Firefox\/([^012]|\d{2,})\./i.test(navigator.userAgent)){
    // What you want to do
}