[正規表現] ややこしい例に遭遇
2009年4月28日
※確認用の言語はJavaScriptを使ってます。
金額風文字列(\12800 とか)をチェックするのに、
以下の正規表現を書いている同僚が居た。
/^[\][0-9]+$/.test("12800")
どうも、[\] を \\? (エスケープ1文字が有るか無いか) だと思っているようで
falseが返るぞー返るぞー とワクワクしながら待ってたら・・・
true
えええっ!?
【解答】
[\][0-9]
部分が
] or [ or 0-9
という解釈になってました。
なるほど、
[[]
で [ の1文字を示す書き方が出来たのか!
文字クラス内は難しいなぁ。