2011-08-04 57 views
2

可能重複:
Regular expression to check if a given password contains at least one number and one letter in c#?的密碼正則表達式

我需要用以下要求創建密碼的正則表達式:

敏2小焦炭
敏2次蓋帽char
最小1特殊字符(!,@,#,$,%,^,&,*,(,),〜) 敏2數字
最小長度8個字符

誰能給出上面的說明書的正則表達式?

注意:我已經實現了這個沒有使用正則表達式使用不同的邏輯。但是,正則表達式比手動處理更強大。

+0

你需要爲此使用正則表達式嗎?如果你沒有使用正則表達式,它會容易得多(而且更可讀)。 –

+0

至少,您需要定義「特殊字符」。 – delnan

+1

任何特定的編程語言? – aioobe

回答

3

正則表達式不是特別適合這種類型的任務。

你也許可以解決它,可能使用零寬度斷言/環視。但是,在我看來,您在驗證某些用戶選擇密碼之後似乎是這樣。

即使你沒有拿出匹配/不匹配的正則表達式,你將如何提供有用的反饋給用戶,如果密碼不匹配的表達?你會說「你輸入的密碼不符合這五個約束.....」。如果用戶被告知類似「您的密碼必須至少爲8個字符」,會不會更好?

如果您確實正在驗證某些用戶輸入,那麼聽起來對我而言,您最好逐個檢查每個約束條件。

+0

我結束了寫作方法來分別驗證所有5個點。謝謝。 –

1

我使用的功能是這樣的。

功能check_pass_strength($ PWD) {

if(strlen($pwd) > 20) { 
    $error .= "Password too long! <br />"; 
} 

if(strlen($pwd) < 8) { 
    $error .= "Password too short , minimum 8 characters! <br />"; 
} 

if(!preg_match("#[0-9]+#", $pwd)) { 
    $error .= "Password must include at least one number! <br />"; 
} 


if(!preg_match("#[a-z]+#", $pwd)) { 
    $error .= "Password must include at least one letter! <br />"; 
} 


if(!preg_match("#[A-Z]+#", $pwd)) { 
    $error .= "Password must include at least one CAPS! <br />"; 
} 



if(!preg_match("#\W+#", $pwd)) { 
    $error .= "Password must include at least one symbol! <br />"; 
} 


if($error){ 
    echo "Password validation failure(your choise is weak):<br /> $error"; 
    return 0; 
} else { 
    return 1; 
} 

} 你可以修改它爲您的需求,瞧!

+0

這是PHP! OP是關於C#的。除此之外,你使用4個正則表達式來決定密碼是否符合所有條件,似乎是一個昂貴的過程,恕我直言。 – Bazzz