从MYSQL获取的正则表达式未验证

时间:2012-07-27 03:30:37

标签: java mysql regex

  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中填充,填充在地图中,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);

它返回true。为什么呢?

1 个答案:

答案 0 :(得分:3)

问题可能出在\\d的代码段regexString中。

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

System.out.println(regexString);

此外,如果您可以分享有关regexPair及其get()的更多详细信息,将会很有帮助。