- PR -

漢字(JIS第一水準, JIS第ニ水準のみ)の正規表現について [C#.NET]

1
投稿者投稿内容
さわこ
ベテラン
会議室デビュー日: 2003/06/04
投稿数: 71
投稿日時: 2004-07-12 19:39
現在、入力チェック(正規表現)で、
以下の文字以外はエラーにするような制限をかけています。
(というか、するようにしてくれとお客から言われてしまったので・・・)

全角スペース、記号類(但し¢£¬を除く)、数字、アルファベット、ひらがな、カタカナ、
ギリシャ文字、ロシア文字、罫線用文字、漢字(JIS第一水準, JIS第ニ水準のみ)

しかし、"東京都"や"神奈川県"という住所などで、
必ずエラーとして帰ってきます。
原因は、漢字(JIS第一水準, JIS第ニ水準)で引っかかっていると思われるのですが、
この場合、何かよい対処法はあるのでしょうか?

もし、お判りになる方がいらっしゃったら、是非!教えていただけますでしょうか。
宜しくお願い致します。

[ソース]
public string CheckZenCheck_ToshibaDM( string strValue, string strErrMsg )
{
string strReturnValue = String.Empty;

if( strValue.Trim() != "" )
{
Regex objRegex = new Regex("^[亜-熙α-ωΑ-Ωぁ-んァ-ヶa-zA-Z0-9АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\〜‖|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+−±×÷=≠<>≦≧∞∴♂♀°′″℃¥$%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯]+$");
if( !objRegex.IsMatch( strValue.Trim() ) )
{
strReturnValue = strErrMsg;
}
}
return strReturnValue;
}

vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-07-12 22:35
>原因は、漢字(JIS第一水準, JIS第ニ水準)で引っかかっていると思われるのですが
根拠は? 本当にそこで引っかかっているか確認しましたか?

C#.NETでは、文字はUnicodeで扱われます。
JIS水準の順番で並んでいるわけではありません。

まずは「東京都」「神奈川県」の各文字と、
正規表現中の'亜'と'熙'を数値型に直して、
値を確認してみてはいかがでしょう。

(脱線)
ところでこれはお仕事で書いているコードでしょうか。
固有名詞が入っているようなものをそのまま貼るのはどうかと…。
1

スキルアップ/キャリアアップ(JOB@IT)