Java 密码中连字符的正则表达式

Java 密码中连字符的正则表达式,java,regex,Java,Regex,要在密码验证中允许连字符,以下是案例- 1.必须包含混合大小写 2.长度必须在8到32之间 3.至少有一个特殊字符。(仅在键盘上可见) 我成功了, ((?=.*\\d)(?=.[a-z])(?=.[a-z])(?=.[!@$%^&*(?={};:,.?/])。{8,32}) 但是它不允许连字符,所以在哪里放置连字符,所以它在特殊字符集中包含连字符。您需要在字符类中允许连字符- 试试这个正则表达式: ^(?=.*?\\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!@#$%^&

要在密码验证中允许连字符,以下是案例-
1.必须包含混合大小写
2.长度必须在8到32之间
3.至少有一个特殊字符。(仅在键盘上可见)

我成功了,
((?=.*\\d)(?=.[a-z])(?=.[a-z])(?=.[!@$%^&*(?={};:,.?/])。{8,32})


但是它不允许连字符,所以在哪里放置连字符,所以它在特殊字符集中包含连字符。

您需要在字符类中允许连字符-

试试这个正则表达式:

^(?=.*?\\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!@#$%^&*()_'\"+={};:<>,.?/-]).{8,32})$
^(?=.*?\\d)(?=.[a-z])(?=.[a-z])(?=.[!@$%^&*(?='\“+={};:,.?/-])。{8,32})$

您可能可以构建一个一次性完成所有检查的正则表达式,但我建议使用以下方法:

private静态布尔值isPasswordValid(字符串密码){
布尔有效=真;
//至少一个小写字符
有效(&=password.matches(“%a-z]”);
//至少一个大写字符
有效(&=password.matches(“%A-Z]”);
//至少一位数字
有效(&=password.matches(“%0-9]”);
//至少一个特殊字符
有效的&=password.matches(“.[!@$%^&*()”+={};:,.?/-]);
//长度&没有其他字符
有效的&=password.matches(“[a-zA-Z0-9!@$%^&*()”+={};:,.?/-]{8,32}”);
返回有效;
}

我已经做好了
——请出示。如果您当前的正则表达式与除连字符以外的所有字符都正确匹配,只需将其添加到特殊字符集的末尾,就在结束之前]密码的最大长度不是一个好主意。