2017-09-06 24 views
-3

很明顯,這個問題已經被多次詢問,關於如何使用c#製作正則表達式來滿足要求。我需要一個正則表達式的..用於複雜密碼的正則表達式

  • 是至少8個字符長
  • 至少1個大寫字母
  • 1號
  • 特殊字符!@#$%^ * &()
  • 密碼與登錄名稱不同(易於檢查)
  • 不包含超過2個重複字符,例如aaa123

試圖自己解決這個問題,我正在考慮如何逐一完成這些需求中的每一個,並隨着我去建立正則表達式。這是正確的方法嗎?

我覺得我可能會錯過一些東西。我正在閱讀有關正則表達式以及如何創建一個複雜的表達式。您的反饋非常需要。

謝謝。

+0

@Tushar我覺得OP的問題是在該代碼的結合這多出的部分*不含超過2個重複字符,例如aaa123 *;)。 –

+2

[必填CH鏈接](https://blog.codinghorror.com/password-rules-are-bullshit/) –

回答

2

我想你可以使用一個Regex這樣的:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]#$%^&*()])(?!.*userName)(?!.*(.)\1{2,}).{8,}$ 

說明:

^       // from start 
(?=.*[a-z])    // has at least one lower case character 
(?=.*[A-Z])    // has at least one upper case character 
(?=.*\d)     // has at least one digit 
(?=.*[[email protected]#$%^&*()])  // has at least one special character 
(?!.*userName)   // has not userName => set it by a variable 
(?!.*(.)\1{2,})   // has not an repeated character more than twice 
.{8,}     // has a length of 8 and more 
$       //to the end 
+2

https://stackoverflow.com/a/5142164/47672。無論如何,這個問題與現有的問題完全相同。它應該被關閉。 – 0x49D1

+0

@ 0x49D1正則表達式不可讀 - OP *不需要包含超過2個循環字符*而不是*確保字符串有三個小寫字母*;)。 –

+0

無論如何這並不符合OP的要求 - 即使沒有重複,也沒有顯示任何努力。 – Sayse