2013-02-17 31 views
0

我有一個基於OS版本號的條件邏輯。在瀏覽器中useragent字符串。JavaScript測試方法不按預期工作

這是我試過的代碼。

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?

回答

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"); 
} 
+1

感謝Minko,它的工作。我應該瀏覽javascript正則表達式指南,它將'.'視爲特殊字符。 – Sreeram 2013-02-17 15:21:35