連字符表達要允許在密碼驗證連字符,以下是該情況下─
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
密碼的最大長度不是一個好主意。 –