dポイントプレゼントキャンペーン実施中!

現在下記のように文字列をチェックする正規表現を作成したのですが、
「禁止文字を含まない」と表示されてしまいます。
どこが問題なのか、指摘していただければと思います。

よろしくお願いします

----------------------------------------------------

// チェックする文字列
String str = "abc\";

// 禁止文字
String regex = "\\/:;\\*?'\"<>\\|~\\\\"
+ "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンァィゥェォッャュョ゛゜ー、。「」・"
+ "(1)(2)(3)(4)(5)(6)(7)(8)(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)"
+ "IIIIIIIVVVIVIIVIIIIXXiiiiiiivvviviiviiiixx"
+ "ミリキロセンチメートルグラムトンアールヘクタールリットルワットカロリードルセントパーセントミリバールページmmcmkmmgkgccm2"
+ "〝〟No.K.K.TEL(上)(中)(下)(左)(右)(株)(有)(代)明治大正昭和平成∮∑∟⊿";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);

//
if (m.find()){
out.println("禁止文字を含む");
}else{
out.println("禁止文字を含まない");
}

A 回答 (3件)

[ ] を忘れています。



(あと、正規表現で機種依存文字を弾こうとするよりも、正規表現で受け入れる文字範囲を指定する方が安全です。機種依存文字を弾いた方がいい場合もあるので一概にいいとはいえませんが)
    • good
    • 0
この回答へのお礼

回答ありがとうございます
そうでした、完全に見落としていました
[]を追加したら予定どうりの動きになりました

ありがとうございました

お礼日時:2011/03/29 09:10

メモ:



*これ正規表現使ってやる意味あるのかなーって正規表現嫌いの人間としては思うわけで。
よく「使うな」と言われる「半角カナ」はISO-2022-JPに存在しない(のでそれが主流なメールでは避けることがある)が、Shift_JIS,EUC-JP,UTF-8には存在する。

*それ以外は、規格の文字集合に定められていない範囲に文字が定義されていないことが問題だと思う。あくまで別の理由だ。
http://www.d-toybox.com/studio/lib/romanNumerals …

*実際どうなったか知らんけど、規格側に戻ったのかな。
http://www.ingrid.org/java/i18n/encoding/shift_j …

じゃあさ、Shift_JISの「機種依存文字」のチェックとかどうとかって、もっと単純に
http://ideone.com/XxJyG
でいいんじゃね、とか頭を掠めた。
================================================
回答うまく書けなかった気がするので、わかったら誰か俺の回答を翻訳してくれると…(ぇ
    • good
    • 0
この回答へのお礼

回答ありがとうございます
今回は、正規表現でいこうかと思います
ありがとうございました

お礼日時:2011/03/29 09:12

この正規表現が何を意味するのか, きちんと理解した方がいいと思うな~.

この回答への補足

regexに指定した文字がmatcherの引数で指定した文字列に含まれるかどうかを確認できるものと認識しているのですが、違うのでしょうか?
ちなみに、後半部分は変換されてしまっていますが環境依存文字です

補足日時:2011/03/29 01:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!