2016-11-23 44 views
-2

我沒有要求使用正則表達式 並且在下面的驗證標準正則表達式用於驗證密碼

驗證密碼

密碼應該包含任何3出來的4種類型的字符的:

  1. 小寫字母(a,b,c,d,.......,y,z)
  2. 大寫字母(A,B,C,D,......,Y,Z)
  3. 數字(0,1,2,3,4,5,6,7,8,9)
  4. 特殊字體ERS($,&,%,!,#,@)」

我想出了下面的正則表達式,但問題是,它僅驗證,直到第9個字符,並允許的話之後的任何字符

^(?=.{9,})((?=.*\d)(?=.*[a-z])(?=.*[A-Z])|(?=.*\d)(?=.*[a-z])(?=.*[[email protected]#$%&])|(?=.*\d)(?=.*[A-Z])(?=.*[[email protected]#$%&])|(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$%&])).*$ 

編輯:我已經經歷了類似的問題,但我的問題是不同的,因爲它期望滿足4個標準中的3個並且只有有限的字符集。

任何幫助,將不勝感激!

+2

可能的重複[使用正則表達式c#驗證密碼](http://stackoverflow.com/questions/34715501/validating-password-using-regex-c-sharp) –

+0

如果你可以添加一個例子,它會很好。 –

+2

這些測試中的每一個都會在幾行非正則表達式代碼中實現。有什麼理由必須將它們全部組合成一個正則表達式嗎?如果在六個月後當需求發生變化時您再回到那段代碼中,您是否還記得正則表達式版本的工作原理? –

回答

1

更換你最後的「由字符的」檢查

.*$ 

與「是由只允許字符」

[A-Za-z0-9$&%!#@]*$ 
檢查

只要其他規則滿足,前者允許您使用任何您想要的字符;後者確保輸入中的每個字符都是允許的字符之一。

+0

哇。這看起來有希望。我現在正在測試它更多... –

+0

優秀。謝謝。 –

-1

這是一個奇怪的密碼正則表達式檢查要求...

(^[a-zA-Z0-9]+$)|(^[[email protected]#$%&]+$)|(^[[email protected]#$%&]+$)|(^[[email protected]#$%&]+$) 

4選3有4種可能性。這裏有4個捕獲組。我認爲你可以弄清楚它在做什麼......

+2

這不起作用,因爲必須有4種類型中的3種(也就是說,你不能將它們組合成字符類,因爲這意味着OR) –

+0

如果你認爲它不起作用,請給我一個模式,應該匹配,但這個正則表達式不匹配。它適用於所要求的內容,比作者的混亂效率更高。 – Hong

+0

看,不僅我認爲它不起作用。有人給你的答案倒下了。 –