2013-11-14 80 views
0

連字符表達要允許在密碼驗證連字符,以下是該情況下─
1.必須包含混合情況下
2.長度必須是8至32
3.至少一個特殊字符。 (只有在鍵盤上可見)。經常用於在密碼

我已經做到了,
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$%^&*()_'\"+={};:<>,.?/]).{8,32})
但它不允許hyphen,所以在那裏把hyphen所以它包括在特殊字符集連字符。

+5

'我已' - 請出示。另外這可能是[有趣的閱讀](http://security.stackexchange.com/a/33471)。 – HamZa

+1

如果您當前的正則表達式正確匹配除連字符之外的所有內容,只需將其添加到特殊字符集的最後,就在關閉之前] – OGHaza

+0

密碼的最大長度不是一個好主意。 –

回答

1

你也許可以建立一個正則表達式做所有的檢查中一氣呵成,但我建議以下方法來代替:

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; 
} 
+0

它適用於我的案件。 – umesh

1

你需要在你的角色類中允許使用連字號-

試試這個正則表達式:

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

不,我不工作。 – umesh