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 に答える