连字符表达要允许在密码验证连字符,以下是该情况下─
1.必须包含混合情况下
2.长度必须是8至32
3.至少一个特殊字符。 (只有在键盘上可见)。经常用于在密码
我已经做到了,
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$%^&*()_'\"+={};:<>,.?/]).{8,32})
但它不允许hyphen
,所以在那里把hyphen
所以它包括在特殊字符集连字符。
连字符表达要允许在密码验证连字符,以下是该情况下─
1.必须包含混合情况下
2.长度必须是8至32
3.至少一个特殊字符。 (只有在键盘上可见)。经常用于在密码
我已经做到了,
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$%^&*()_'\"+={};:<>,.?/]).{8,32})
但它不允许hyphen
,所以在那里把hyphen
所以它包括在特殊字符集连字符。
你也许可以建立一个正则表达式做所有的检查中一气呵成,但我建议以下方法来代替:
private static boolean isPasswordValid(String password) {
boolean valid = true;
// at least one lowercased char
valid &= password.matches(".*[a-z].*");
// at least one uppercased char
valid &= password.matches(".*[A-Z].*");
// at least one digit
valid &= password.matches(".*[0-9].*");
// at least one special char
valid &= password.matches(".*[[email protected]#$%^&*()_'\"+={};:<>,.?/-].*");
// length & no other char
valid &= password.matches("[[email protected]#$%^&*()_'\"+={};:<>,.?/-]{8,32}");
return valid;
}
它适用于我的案件。 – umesh
你需要在你的角色类中允许使用连字号-
。
试试这个正则表达式:
^(?=.*?\\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[[email protected]#$%^&*()_'\"+={};:<>,.?/-]).{8,32})$
不,我不工作。 – umesh
'我已' - 请出示。另外这可能是[有趣的阅读](http://security.stackexchange.com/a/33471)。 – HamZa
如果您当前的正则表达式正确匹配除连字符之外的所有内容,只需将其添加到特殊字符集的最后,就在关闭之前] – OGHaza
密码的最大长度不是一个好主意。 –