2014-05-16 31 views
3

我試圖通過客戶端(JavaScript)和服務器端(ASP.NET C#)上的正則表達式來實現密碼複雜度的強制實施。密碼複雜度的正則表達式

的規則如下:

  • 必須是8-40個字符
  • 必須至少包含一個數字
  • 必須包含至少一個小寫字母
  • 必須包含至少一個大寫字母
  • 必須包含至少一個特殊字符

您可以幫助構建驗證上述所需的正則表達式嗎?

+3

[相關XKCD(http://xkcd.com/936/)。 – Sam

+1

不要試圖將它作爲一個正則表達式來完成。看到我的答案在這裏:http://stackoverflow.com/a/18642031/8454 –

+0

不要嘗試它。只有密碼長度很重要。讓它> = 12,你很好。 – Rudie

回答

2

這裏試試這個正則表達式:

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{8,40}) 

(   # Start of group 
    (?=.*\d)  # must contains one digit from 0-9 
    (?=.*[a-z])  # must contains one lowercase characters 
    (?=.*[A-Z])  # must contains one uppercase characters 
    (?=.*[@#$%])  # must contains one special symbols in the list "@#$%" 
       .  #  match anything with previous condition checking 
       {8,40} #  length at least 8 characters and maximum of 40 
)  
+0

那麼我只是說,只有一個正則表達式是不可能的。沒想到前瞻。好一個。 –

+2

您需要添加錨以確保不超過40個字符。 –

+0

你的答案肯定適用於我所要求的,我感謝你的幫助。我最終改變了我的代碼,只是檢查了一個長長的需求,因爲我意識到所有這些約束並不一定使它更安全。 –