我有一些像这样的代码:
var versionPattern = new RegExp("^Firefox/[1]{1}[7-9]{1}|[2-9]{1}[0-9]{1}$");
if (navigator.userAgent.indexOf(versionPattern) > 0) {
alert("Firefox Detected");
return true;
我想检测Firefox 17及更高版本,但这段代码似乎无法正常工作。我该怎么做才能改进RegExp?
答案 0 :(得分:1)
类似的东西:
navigator.userAgent.match(/Firefox\/([1]{1}[7-9]{1}|[2-9]{1}[0-9]{1})/);
请勿在RegExp中使用^
,因为 Firefox 不是字符串的开头。
如果你想使用可选的17-19 | 20 - 99,它应该在(
和)
之间。
indexOf是在另一个字符串中找到字符串的第一个索引。
答案 1 :(得分:1)
您可以阅读userAgent字符串,匹配版本号 -
var bs=navigator.userAgent.match(/Firefox\/(\d+)/);
if(bs && parseInt(bs[1])>17) alert('Firefox '+bs[1]+' detected.')
答案 2 :(得分:0)
您可以使用*REGEX*.test('testString');
测试正则表达式
它返回true / false。我可以找到类似" Firefox17" " Firefox22" ...通过这个正则表达式:/ ^(Firefox)[1] {1} [7-9] {1} | [2] {1} [0-9] {1} $所以你可以尝试:
/^(Firefox)[1]{1}[7-9]{1}|[2]{1}[0-9]{1}$.test(navigator.userAgent)
答案 3 :(得分:-1)
您需要的变量是var majorVersion
下面的代码示例使用navigator.userAgent来实现浏览器 检测。它还使用navigator.appName和navigator.appVersion作为 只有最后的手段,如果userAgent字符串有一个"意外的" 格式。在浏览器中,此代码生成以下输出:
浏览器名称= Mozilla Firefox
完整版= 28.0
主要版本= 28
navigator.appName = Netscape
navigator.userAgent = Mozilla / 5.0(Windows NT 6.2; WOW64; rv:28.0)Gecko / 20100101 Firefox / 28.0
以下是执行浏览器检测的源代码:
<script>
var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName = navigator.appName;
var fullVersion = ''+parseFloat(navigator.appVersion);
var majorVersion = parseInt(navigator.appVersion,10); // this is what you need
var nameOffset,verOffset,ix;
// In Firefox, the true version is after "Firefox"
if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
browserName = "Firefox";
fullVersion = nAgt.substring(verOffset+8);
}
// In most other browsers, "name/version" is at the end of userAgent
else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) <
(verOffset=nAgt.lastIndexOf('/')) )
{
browserName = nAgt.substring(nameOffset,verOffset);
fullVersion = nAgt.substring(verOffset+1);
if (browserName.toLowerCase()==browserName.toUpperCase()) {
browserName = navigator.appName;
}
}
// trim the fullVersion string at semicolon/space if present
if ((ix=fullVersion.indexOf(";"))!=-1)
fullVersion=fullVersion.substring(0,ix);
if ((ix=fullVersion.indexOf(" "))!=-1)
fullVersion=fullVersion.substring(0,ix);
majorVersion = parseInt(''+fullVersion,10);
if (isNaN(majorVersion)) {
fullVersion = ''+parseFloat(navigator.appVersion);
majorVersion = parseInt(navigator.appVersion,10);
}
document.write(''
+'Browser name = '+browserName+'<br>'
+'Full version = '+fullVersion+'<br>'
+'Major version = '+majorVersion+'<br>'
+'navigator.appName = '+navigator.appName+'<br>'
+'navigator.userAgent = '+navigator.userAgent+'<br>'
)
</script>