1
  for(String paramName:paramNames){
    String regexString = regexPair.get(paramName);
    try{             
        System.out.println(regexString);
        Pattern p = Pattern.compile(regexString);
        Matcher m = p.matcher(paramMap.get(paramName)[0]);
        status = m.matches();
    }catch(Exception e)
    {
        e.printStackTrace();
    }
    if(!status)
           break;
}

どこregexSringに価値があるか

 "^(?!.*[^A-Za-z0-9@])((?=.*\\d)(?=.*[a-z]).{6,20})$"

の値はregexStringmysql db から取得され、マップに入力され、paramMap.get(paramName)[0]"dssf55454"がありますが、true を返すはずなのに false を返しています。

次のサンプルプログラムを書くと

 Pattern p = Pattern.compile("^(?!.*[^A-Za-z0-9@])((?=.*\\d)(?=.*[a-z]).{6,20})$");
 Matcher m = p.matcher("mal4554SD");
 status = m.matches();
 System.out.println(status);

true を返します。なんで?

4

1 に答える 1

3

のスニペット\\dに問題がある可能性がありますregexString

コンソールに表示される結果は何ですか?

System.out.println(regexString);

regexPairまた、とそのについて詳しく教えていただけると助かりますget()

于 2012-07-27T03:51:24.800 に答える