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数据库和填充在映射中的数据库中获取的,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);
它返回真值。为什么?
最佳答案
问题可能出在\\d
中的片段regexString
中。
控制台上打印的结果是什么?
System.out.println(regexString);
此外,如果您能分享更多关于
regexPair
及其get()
的详细信息,将会很有帮助。