今回は正規表現における特殊な記述方法をご紹介します。
ご紹介をする前に、簡単なひらがな、カタカナ、漢字チェックを
下記にご紹介。
ひらがな・カタカナ・漢字は16進表記で表すと以下のようになります。
・ひらがな
3040 ~ 309F
・カタカナ
30A0 ~ 30FF
・漢字(ひらがな、カタカナもカバーしている模様)
4E00 ~ 9FFF
これを利用して、次のような正規表現を書きます。
[\4E00-\u9FFF]
ちなみに、「\u+16進数」はUnicode文字とマッチする文字列を意味します。
さて、上記の書き方も一つの記述方法ですが、UniCodeの規格団体である
UTCが以下のようなUnicode文字のブロックの範囲を定義しています。
・ひらがな
Hiragana
・カタカナ
Katakana
・漢字
CJK Unified Ideographs or Han
↓その他の国の言語に関しては以下を参照。
http://www.unicode.org/Public/UNIDATA/Blocks.txt
ブロック名の先頭に「IS」を付け文字クラスを中カッコで
くくり、“\p”を付けたものが正規表現における「名前付きクラス」となります。
(ブロック名の前にISを付けるのは.NET独自のもの、JAVA:Perlでは不要)
これを利用し、以下のような正規表現が書けます。
ひらがなチェック
\p{IsHiragana}
カタカナチェック
\p{IsKatakana}
漢字チェック
\p{IsCJKUnifiedIdeographs}
上記で紹介した以外にも\p{~}で表現が出来るものがあるので一部紹介します。
英数字
p{Latin} ※
スペースや句読点など
\p{Common}※
表示可能な文字
\p{L}
記号
\p{S}
数学記号
\p{Sm}
※OSなどの環境によっては利用できないものもあります。
私が試した範囲では、特殊なケースを除いては使用出来る
のかな?と思いました。
簡単なチェック関数などで、上記の表記で正規表現を記述
してみるのも良いかもしれません。