ブログトップ 記事一覧 ログイン 無料ブログ開設

Enjoy*Study このページをアンテナに追加 RSSフィード Twitter

2006-07-06

[]JavaScript正規表現で、メタ文字の"\s","\d"はクロスブラウザでの互換性が無い。(追記@2007/11/29)

正規表現で"\d"は、"[0-9]"と一緒だとずっと思っていましたが、FireFoxでは全角数字もマッチします。(FireFox1.5.0.4で確認)

/\d/.test('1')  // =>true
/\d/.test('1') // =>true

ちなみにIE 6、Opera 9では、"/\d/.test('1')"はfalseとなります。

気になったので、"\s"、"\w"についても調べてみたところ、下記のような結果になりました。

パターンFireFox 1.5,2.0IE 6, 7Opera 9
/\s/.test(' ') // 半角truetruetrue
/\s/.test(' ') // 全角truefalsetrue
/\d/.test('1') // 半角truetruetrue
/\d/.test('1') // 全角truefalsefalse
/\w/.test('1') // 半角truetruetrue
/\w/.test('1') // 全角falsefalsefalse
/\w/.test('a') // 半角truetruetrue
/\w/.test('a') // 全角falsefalsefalse

なんと、"\s"も、全角の対応がブラウザによって違いました。

知らずに使っていると、思わぬところでハマリそうです。。

クロスブラウザを考えた場合、"\d","\s"は使わないようにしないと危険ですね。


----------------

追記@2007/10/06

Wadaさんからコメントで、、

Operaの結果が ECMA-262 3rd Edition の規定どおりのものです。

Firefoxの¥dは「バグ」で、つい最近、もじら組の「ばぐじら」に報告されました。

http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=5863

この日記の比較表のおかげで調査が非常に楽になり、助かりました。

勝手にECMA-262 3rd Editionから逸脱しちゃって、そのことに気がついて戻したようです。

次のFirefox 3で直るはずです。

IE6の ¥s は、ECMA-262 3rd Editionには対応していない、ということです(2nd あるいは1stまでしか対応していない)

IE 7ではきちんと対応しているかもしれません。

と教えていただきました。とても有用な情報ありがとうございます!


----------------

追記@2007/11/29

\sはIE 7でも対応してませんでした。

WadaWada 2007/10/06 10:17 Operaの結果が ECMA-262 3rd Edition の規定どおりのものです。

Firefoxの¥dは「バグ」で、つい最近、もじら組の「ばぐじら」に報告されました。
http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=5863
この日記の比較表のおかげで調査が非常に楽になり、助かりました。
勝手にECMA-262 3rd Editionから逸脱しちゃって、そのことに気がついて戻したようです。
次のFirefox 3で直るはずです。

IE6の ¥s は、ECMA-262 3rd Editionには対応していない、ということです(2nd あるいは1stまでしか対応していない)
IE 7ではきちんと対応しているかもしれません。

onozatyonozaty 2007/10/06 12:05 こちらこそ、とても有用な情報を教えていただきありがとうございます!!
エントリの方にも追記させていただきます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証