豚吐露@wiki
正規表現を使う時の問題点
最終更新:
Bot(ページ名リンク)
-
view
C#で正規表現による検索を行う場合、
if ([[Regex]].IsMatch(chk, @"[\d]"))
のようにしたりします。
このとき、一般には『\d』でhitするのは『0-9』です。
が、C#では『RegexOptions』を付けずにデフォルトで検索するとhitするのは『0-90-9』となります。
が、C#では『RegexOptions』を付けずにデフォルトで検索するとhitするのは『0-90-9』となります。
要はデフォルトでは全半角の区別が行われません。
当然ですが『\w』だと『0-9a-zA-Z0-9a-zA-z_』が対象の文字となります。
当然ですが『\w』だと『0-9a-zA-Z0-9a-zA-z_』が対象の文字となります。
これを回避するには『RegexOptions.ECMAScript』等を付与した形で実行してやる必要があります。
if (Regex.IsMatch(chk, @"[\d]", RegexOptions.ECMAScript))
これはC#で正規表現を使う場合、必ず出てくる問題のようなので、心配だったら『
文字クラス
』ではなく直接記述するようにしましょう。
e.g.)
e.g.)
\d | → | [0-9] |
\D | → | [^0-9] |
更新日: 2014年10月14日 (火) 17時31分00秒