2013-07-26 63 views
0

我正在開發一個帶有MVC 4,剃鬚刀的應用程序。對於一個變化密碼視圖我需要做的,其具有下列條件的一些驗證:需要匹配至少3個正則表達式中的給定模式

應該匹配至少以下的3:

1.大寫字母字符

2.小寫字母字符

3號

4.特殊鍵盤字符(除腳本標記)

現在,我已經寫了下面的正則表達式在我的模型

[RegularExpression("^([a-zA-Z0-9#$%[email protected]!{},`~&*()'?.:;_|^/+\"-]{8,32})$", ErrorMessage = "Current Password is invalid")] 

,但是,這將匹配任何給定的子集。我需要匹配至少3個。任何人都可以請幫我,我該怎麼做?

回答

1

這可能不是使用密碼驗證的正則表達式是個好主意,但使用向前看符號和或運營商|可以讓你做到這一點:

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

有4個部分在這個正則表達式:

(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]) 

確保至少有1個較低的alpha,1個較高的alpha和1個數字。

(?=.*[#$%[email protected]!{},`~&*()'?.:;_|^/+\"-])(?=.*[a-z])(?=.*[0-9]) 

確保至少有1個特殊字符,1個上部字母和1個數字。

(?=.*[A-Z])(?=.*[#$%[email protected]!{},`~&*()'?.:;_|^/+\"-])(?=.*[0-9]) 

確保有至少1上的α,特殊字符和1個數字。

(?=.*[A-Z])(?=.*[a-z])(?=.*[#$%[email protected]!{},`~&*()'?.:;_|^/+\"-]) 

確保至少有1個上部字母,1個下部字母和1個特殊字符。

並採用|與四(分組到非捕獲組)給你3出4驗證。

然後使用.{8,32}作爲密碼的長度

+0

嗨傑裏,非常感謝。我感謝你的迴應。但不幸的是,這個正則表達式不適合我。 我也試圖把第一部分,但仍然沒有奏效。 正如你所說的,使用正則表達式驗證密碼字段可能不是一個好主意。你能否建議我以更好的方式做同樣的事情? –

+0

@SuhaniMody你的意思是'你不適合你'?你有任何錯誤?另一種方法是檢查單獨每個實例之類的東西,每一個成功的支票返回1,添加的每個結果,如果它總結了至少3,密碼將是有效的。 – Jerry

+0

嗨傑裏,我試圖把這第一部分作爲正則表達式。 (?=。* [A-Z])(?=。* [A-Z])(?=。* [0-9]),但它允許任何上限阿爾法,低級α或數目。不是所有的人。 –

相關問題