我需要執行以下的口令策略:正則表達式對密碼策略
至少9個字符,其中至少一個字符從各4 字符類(字母下和上殼體的;數字,符號)。
任何正則表達式的專家可以在這裏幫忙嗎? (我正在使用Java正則表達式引擎)
雖然我們在這裏,有沒有任何在線工具可以爲這些類型的任務生成正則表達式?
謝謝!
我需要執行以下的口令策略:正則表達式對密碼策略
至少9個字符,其中至少一個字符從各4 字符類(字母下和上殼體的;數字,符號)。
任何正則表達式的專家可以在這裏幫忙嗎? (我正在使用Java正則表達式引擎)
雖然我們在這裏,有沒有任何在線工具可以爲這些類型的任務生成正則表達式?
謝謝!
(?=.{9,})(?=.*?[^\w\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*
注意,這種模式不包括像ö
特殊字符UTF。我不會在一個正則表達式中這樣做。如果你想驗證它,我會分解它並搜索每個東西。
爲了避免誤解,這些工具不是用於*生成*表達式,而是用於*測試*它們。 – 2012-03-29 08:51:07
是的,但可以通過跟蹤和錯誤生成表達式。它是測試/使用表達式並瞭解它們的好方法。但在技術上你是對的;) – pascalvgemert 2012-03-29 08:53:12
正則表達式必須開發,「生成」他們的蹤跡和錯誤只是容易出錯。 – stema 2012-03-29 08:56:15
我會用多個正則表達式對解決這個問題:
9個字符 - 你可以正則表達式這一點,但。長度()> = 9時好多了!
對於角色職業,你應該使用一個公關類:
[a-z]+
[A-Z]+
[0-9]+
[£$%&{[...]+ //all the possible symbols you want to accept
or perhaps:
[:punct:]+ // this depends on your programming language..
or like in the suggestion by @david-halter:
[^\w\s]+ // not alphanumeric or spaces
這是我會怎麼做(使用正向前查找):
(?=.{9,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\p{Punct}).*
完整的示例和測試:
// Regexp Description
Pattern p = Pattern.compile("(?=.{9,})" + // "" followed by 9+ symbols
"(?=.*[a-z])" + // --- ' ' --- at least 1 lower
"(?=.*[A-Z])" + // --- ' ' --- at least 1 upper
"(?=.*[0-9])" + // --- ' ' --- at least 1 digit
"(?=.*\\p{Punct})"+ // --- ' ' --- at least 1 symbol
".*"); // the actual characters
String[] tests = {
"aB99", // too short
"abcdefghijk", // missing A
"abcdefGHIJK", // missing 5
"12345678910", // missing a
"abcDEF12345", // missing punct
"abcDEF-2345" // works!
};
for (String s : tests) {
boolean matches = p.matcher(s).matches();
System.out.printf("%-12s: %b%n", s, matches);
}
輸出:
aB99 : false
abcdefghijk : false
abcdefGHIJK : false
12345678910 : false
abcDEF12345 : false
abcDEF-2345 : true
最後再說一句:這種方法的問題是,它不是很人性化。如果您要對用戶作出明智迴應,例如「密碼缺少數字符號」,則需要再次執行該操作(以確定哪項要求失敗)。
學習正則表達式有什麼問題?國際海事組織,如果你想*避免*做/學習的東西,那麼你在錯誤的網站。 – 2012-03-29 08:46:32
正則表達式的一個很好的參考是在http://www.vogella.de/articles/JavaRegularExpressions/article.html。請張貼你已經嘗試過的reg ex – 2012-03-29 08:47:05
http://stackoverflow.com/questions/3387785/password-validation-regular-expression – cmbuckley 2012-03-29 08:47:07