Safari 2.0.4で発生したバグ。Safari 3ではこのバグは修正済みと思われる。(WindowsのSafari 3.0.4 (beta)では正常に動作した。)
問題点:
下記のように、正規表現リテラル内にユニコードエスケープで書いた場合に、マッチするはずの正規表現に正常にマッチしないという。
"カタカナ".match(/^[u30a1-u30f6u30fc]*$/)
ユニコードエスケープ自体が使えないわけではなくて、正規表現リテラル内でのみユニコードエスケープが使えないという現象。
回避策:
正規表現リテラルではなく、正規表現オブジェクトを渡す。
"カタカナ".match(new RegExp("^[u30a1-u30f6u30fc]*$"))
内部的には同じ動きになるのかと思ったが、どうやら違うらしい。
参考:
Safari 2.0.4 Fails on Unicode Escape Sequences in Regular Expressions
赤福プラス + Safari patch > パッチの内容
0 件のコメント:
コメントを投稿