Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript测试方法未按预期工作_Javascript - Fatal编程技术网

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正则表达式指南,它将
作为特殊字符告诉我。