javascript测试方法未按预期工作
我有一个基于浏览器javascript测试方法未按预期工作,javascript,Javascript,我有一个基于浏览器useragent字符串中的OS版本号的条件逻辑 这是我试过的代码 var useragent = "Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D"; if((/2.3/).test(useragent)){ alert("2"); } else if((/3./).test(useragent)){ alert("3"); } else if((/4./).test(useragen
useragent
字符串中的OS
版本号的条件逻辑
这是我试过的代码
var useragent = "Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D";
if((/2.3/).test(useragent)){
alert("2");
}
else if((/3./).test(useragent)){
alert("3");
}
else if((/4./).test(useragent)){
alert("4");
}
else {
alert("5");
}
我总是收到3
的警报
我尝试用indexOf
替换test
方法,得到了5
的警报
有人能解释一下为什么
(/3./).test(useragent)
返回true吗?你总是会得到这样的结果,因为你的正则表达式/3./
表示-match 3和它后面的任何符号。您必须退出
例如,尝试/3\./
,分别尝试其他方法:/2\.3/
,/4\./
您的代码应该如下所示:
var useragent = "Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D";
if ((/Android 2\./).test(useragent)){
alert("2");
} else if((/Android 3\./).test(useragent)){
alert("3");
} else if((/Android 4\./).test(useragent)){
alert("4");
} else {
alert("5");
}
谢谢明科,成功了。我应该阅读javascript正则表达式指南,它将
作为特殊字符告诉我。