java正则表达式函数中存在问题。它未验证。帮助我

java正则表达式函数中存在问题。它未验证。帮助我,java,Java,这不是匹配模式的方式。您需要使用模式类 String pattern = "((?=.*[a-z])(?=.*\\\\d)(?=.*[A-Z])(?=.*[@#$%!]).{8,})"; if (pattern.matches(password)) { ... } 或者,正如@Andreas所指出的,您只需要反转调用即可 String password = "harshal1A@"; String pattern = "((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?=.*

这不是匹配模式的方式。您需要使用
模式

String pattern = "((?=.*[a-z])(?=.*\\\\d)(?=.*[A-Z])(?=.*[@#$%!]).{8,})";
if (pattern.matches(password)) { ... }
或者,正如@Andreas所指出的,您只需要反转调用即可

String password = "harshal1A@";
String pattern = "((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?=.*[@#$%!]).{8,})";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(password);
System.out.println(m.matches());


在正则表达式中,使用
\\\\
两次转义
d
。您只需使用
\\

将其转义一次即可。您不需要
模式
匹配器
,只需反转调用:
password.matches(模式)
--此外,您还悄悄地将
\\\\d
修改为
\\d
。你应该说点什么,好了@安德烈亚斯。谢谢你指出。@Punit,我说的是真的。请尝试只在一个单独的文件中运行我的代码,一旦你复制了我的结果,你可以将它合并到你的代码中。@Punit,你能接受未来读者的答案吗?是的,我可以接受..并且感谢你们两个
if(!passwordVariable.matches((?=.[a-z])(?=.[a-z])(?=.[[@$%!])。{8,}){System.out.println(“密码不够强!”;}
String password = "harshal1A@";
String pattern = "((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?=.*[@#$%!]).{8,})";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(password);
System.out.println(m.matches());
password.matches(pattern)