0

我有一个基于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 吗?

4

1 回答 1

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");
}
于 2013-02-17T14:27:40.870 回答