javascript测试方法无法按预期工作

时间:2013-02-17 14:26:42

标签: javascript

我有一个基于OS版本号的条件逻辑。在浏览器中useragent字符串。

这是我试过的代码。

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的提醒。

我尝试用test替换indexOf方法,然后收到5的提醒。

有人可以解释为什么(/3./).test(useragent)会返回true吗?

1 个答案:

答案 0 :(得分:1)

你总是得到这个,因为你的正则表达式/3./意味着 - 匹配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");
}