2017-08-25 40 views
-2

我必須製作一個帶有以下條件的密碼的正則表達式: - 最少4個字符 - 至少1非單詞字符。PHP正則表達式的密碼:最少4個字符,其中至少有一個不能是字母或數字

我試着這樣說:

$regex_password = '@(\W)[email protected]'; 
$regex_password1 = '@(?i)([a-z\d])[email protected]'; 

if ((!preg_match($regex_password, trim($_POST['pass']))) && (!preg_match($regex_password1, trim($_POST['pass']))) && strlen(trim($_POST['pass'])) <5){ 
//error 
} 

,然後試圖創建一個新帳戶的密碼:「PAS」,它的工作,所以有什麼毛病我的正則表達式。有人可以幫忙嗎?

+0

[正則表達式的可能的複製,以確保該字符串包含至少一個小寫字符,大寫字母,數字和符號](https://stackoverflow.com/questions/1559751/regex-to-make-sure-that-the-string-contains-at-least-one-lower-case-char-upper ) –

+0

如果您嘗試使用「pas」通過4 char最小條件下降 –

+0

此問題是由於無法再現問題或簡單的印刷錯誤導致的。雖然類似的問題可能在這裏討論,但這個問題的解決方式不太可能有助於未來的讀者。這通常可以通過識別並密切檢查在發佈之前重現問題所需的最短程序來避免。 – Script47

回答

2

你只需要改變你的&&||即如果任何條件的錯誤,然後它會迴應一個錯誤

if ((!preg_match($regex_password, trim($_POST['pass']))) || (!preg_match($regex_password1, trim($_POST['pass']))) || strlen(trim($_POST['pass'])) <5){ 
echo "error"; 
} 
else 
{ 
    echo "ok"; 
} 
相關問題