PHP正则表达式的密码:最少4个字符,其中至少有一个不能是字母或数字

问题描述:

我必须制作一个带有以下条件的密码的正则表达式: - 最少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://*.com/questions/1559751/regex-to-make-sure-that-the-string-contains-at-least-one-lower-case-char-upper ) –

+0

如果您尝试使用“pas”通过4 char最小条件下降 –

+0

此问题是由于无法再现问题或简单的印刷错误导致的。虽然类似的问题可能在这里讨论,但这个问题的解决方式不太可能有助于未来的读者。这通常可以通过识别并密切检查在发布之前重现问题所需的最短程序来避免。 – Script47

你只需要改变你的&&||即如果任何条件的错误,然后它会回应一个错误

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"; 
}