Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从MYSQL获取的正则表达式未验证_Java_Mysql_Regex - Fatal编程技术网

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

Java 从MYSQL获取的正则表达式未验证,java,mysql,regex,Java,Mysql,Regex,其中regexSring具有值 for(String paramName:paramNames){ String regexString = regexPair.get(paramName); try{ System.out.println(regexString); Pattern p = Pattern.compile(regexString); Matcher m = p.matcher(para

其中
regexSring
具有值

  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;
}
regexString
的值是从mysql db映射中填充的,并且
paramMap.get(paramName)[0]
具有值
“dssf55454”
,但它在返回true时返回false

如果我编写以下示例程序

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

这是真的。为什么?

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

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

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

此外,如果您可以共享有关
regexPair
及其
get()

System.out.println(regexString)值的更多详细信息,这将非常有用;是^(?.*[^A-Za-z0-9@])((?=.*\\d)(?=.*[A-z])。{6,20})$regexPair包含不同字段的regex
\\d
是根本原因。在您的情况下,
regexPair.get()
应该返回
\d
。我的意思是你期待一些数字。
System.out.println(regexString);