http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=21609
C#で全角文字や半角文字を表す正規表現
全角文字全体を正規表現で捕まえたいということですが、こう返答しました。
また文字コードにはいろいろあって全角文字とは果たしてどの範囲なのかなども実際にはありません。
文字コードとは何たるかを知らない人にはちんぷんかんぷんにうつるかもしれませんが、これは事実です。
結局MIYAさんが半角文字が含まれていないかどうかを正規表現する@ITのスレを紹介しています。
何が半角で、何が全角なのでしょう。
これらはあくまで過去のShift-JISとASCIIの関係で表現されることであって、Unicode全盛の現在においてはありえない区切りです。
たとえば、"a"は半角ということになっていますが、"ć" 文字コードで言うとU+0107、形でいうとcの上にチョンです。
これは半角ですか?全角ですか?
Shift_JISの世界では存在しない文字です。
"⋂" Uを反対にした数学記号、U+22C2です。これは半角?全角?
サロゲートペアは?
むやみやたらに半角だ、全角だということを判定していてはもうこの世の中渡っていけません。
厳密にシフトJISに変換して0x00-0xFFの範囲で0x00-0x1F, 0x7Fは制御コードなので省き、0x80-0x9F, 0xE0-0xFFの範囲を漢字用として除いたものを半角として定義した場合においてのそれら以外の文字、または2バイト分有する文字ペアを抽出したいというところまで検討しなくちゃ本筋ではないといえるでしょう。
#ま、そこまでわかってたら半角/全角なんていわない訳ですが(^^;
ほかにも機種依存文字というキーワードもあります。これらも調べると楽しくなれますよ。(^^