- PR -

正規表現について

投稿者投稿内容
luckseed
常連さん
会議室デビュー日: 2006/05/23
投稿数: 24
投稿日時: 2006-06-16 14:52
コード:
String a = "*+26568769"; 
if (a.matches(".*[^\\w\\*].*")) { 
    System.out.println("error"); 
} else { 
    System.out.println("ok"); 
} 



これじゃ、だめだよ。
コード:
String a = "*+26568769"; 
if (a.matches("[\\w\\*]*")) { 
    System.out.println("ok"); 
} else { 
    System.out.println("error"); 
} 


こうかな。
CHAN10
会議室デビュー日: 2003/09/21
投稿数: 7
投稿日時: 2006-06-16 15:08
返答ありがとうございます。
なるほど!この書き方だと頭の中が整理しやすく分かりやすいです。コード実行も確認しましたが問題ありませんでした。

となると、私の書いたコードでも問題なく動いてそうな気がするのですが、何か危険が潜んでいる可能性があるのでしょうか?
luckseed
常連さん
会議室デビュー日: 2006/05/23
投稿数: 24
投稿日時: 2006-06-16 18:12
CHAN10さんの書いた正規表現では、文字列が空の場合にもerrorになります。
また、"[\\w\\*]*"の場合には不正文字を検出した段階でfalseが返りますが、
".*[^\\w\\*].*"の場合には不正文字が含まれている場合でも最後までチェックします。
他には、".*[^\\w\\*].*"では"+++\n+++"など、改行コードが含まれている場合にokが出力されます。
CHAN10
会議室デビュー日: 2003/09/21
投稿数: 7
投稿日時: 2006-06-16 18:34
返答ありがとうございます。
なるほど!不正文字を検出した時点でリターンしてくれるのはありがたいですね。膨大な量の文字があると効果絶大ですね。勉強になりました。ありがとうございました。

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