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})$"

的值regexString是从 mysql db 中提取的,并在 map 中填充并paramMap.get(paramName)[0]具有值"dssf55454",但它正在重新调整 false,而它应该返回 true。

如果我编写以下示例程序

 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);

它返回真。为什么?

4

1 回答 1

3

问题可能出\\dregexString.

控制台打印的结果是什么?

System.out.println(regexString);

此外,如果您可以分享更多关于regexPair及其get().

于 2012-07-27T03:51:24.800 回答