9

我有这个代码,它确保用户名只有字母和数字。但是我的代码设置方式,我需要它来检查是否preg_matchfalse.

现在它说“如果安全回显这个”。我需要说“如果不安全就这么说”是合乎逻辑的。有人可以帮我吗?

if (preg_match('/[A-Z]+[a-z]+[0-9]+/', $username))
{
    echo 'Secure enough';
}
4

2 回答 2

33

您可以像这样否定条件:

if (!preg_match('/^[A-Za-z0-9]+$/', $username))
{
    echo 'Not secure enough';
}

此外,[A-Za-z0-9]+如果您的意思是“字母数字”(仅字母和数字)作为一个整体,则您的正则表达式必须是。

如果用户名 1) 以大写字母(或多个)开头 2) 后跟一个或多个小写字母且 3) 以一个或多个数字结尾,则代码中的正则表达式将匹配。

编辑:

我真的不确定这是否是你想要的。你可以做,基本上:

if (preg_match('/^[A-Za-z0-9]+$/', $username)) {
    echo 'Is only letters and numbers';
} else {
    echo 'Contains some other characters';
}

您是否要确保字符串包含特殊字符以使其“足够安全”?或者你想确保它不包含特殊字符,所以在某些时候处理特殊字符不会有任何问题?

安全密码是带有特殊字符的密码,虽然您可能不想强制执行此操作(取决于您的目标受众),但您通常希望您的系统支持密码中的特殊字符。

于 2013-09-20T20:18:48.227 回答
3

就是这样!运营商是为了,所以只是说

if (!preg_match.....)

或者当然这是 else 子句的用途,无论哪种方式,这都是基本的编程,在询问这些简单的事情之前,您需要阅读基本教程。

于 2013-09-20T20:16:47.867 回答