正規表現で"\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.0 | IE 6, 7 | Opera 9 |
---|---|---|---|
/\s/.test(' ') // 半角 | true | true | true |
/\s/.test(' ') // 全角 | true | false | true |
/\d/.test('1') // 半角 | true | true | true |
/\d/.test('1') // 全角 | true | false | false |
/\w/.test('1') // 半角 | true | true | true |
/\w/.test('1') // 全角 | false | false | false |
/\w/.test('a') // 半角 | true | true | true |
/\w/.test('a') // 全角 | false | false | false |
なんと、"\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でも対応してませんでした。