豚吐露@wiki

正規表現を使う時の問題点

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

C#で正規表現による検索を行う場合、
if ([[Regex]].IsMatch(chk, @"[\d]"))

のようにしたりします。

このとき、一般には『\d』でhitするのは『0-9』です。
が、C#では『RegexOptions』を付けずにデフォルトで検索するとhitするのは『0-90-9』となります。

要はデフォルトでは全半角の区別が行われません。
当然ですが『\w』だと『0-9a-zA-Z0-9a-zA-z_』が対象の文字となります。

これを回避するには『RegexOptions.ECMAScript』等を付与した形で実行してやる必要があります。
if (Regex.IsMatch(chk, @"[\d]", RegexOptions.ECMAScript))

これはC#で正規表現を使う場合、必ず出てくる問題のようなので、心配だったら『 文字クラス 』ではなく直接記述するようにしましょう。
e.g.)
\d [0-9]
\D [^0-9]



更新日: 2014年10月14日 (火) 17時31分00秒

タグ:

C# CSharp .Net
記事メニュー
ウィキ募集バナー