0

用户输入密码,例如'tomorrow1234'。我知道我可以用 将它拆分成一个数组str_split,但在那之后,我想遍历每个值并在它们中搜索诸如大写、数字或空格之类的东西。

我该怎么做呢?

4

2 回答 2

1

这是我用来验证密码复杂性的旧备用功能。它要求密码包含大小写字母以及非字母字符。长度检查是微不足道的,并在其他地方处理。

$req_regex = array(
    '/[A-Z]/',      //uppercase
    '/[a-z]/',      //lowercase
    '/[^A-Za-z]/'   //non-alpha
);

foreach($req_regex as $regex) {
    if( !preg_match($regex, $password) ) {
        return NULL;
    }
}

我使用数组和循环,因此在必要时可以轻松添加/删除条件。

于 2012-11-29T18:39:58.827 回答
1

听起来您正在尝试验证密码强度。

看看这个网页,你的解决方案写一个具体的答案会很复杂,但你可以使用正则表达式来检查大小写、符号和数字等内容。此页面有几个示例,您可以根据需要进行修改。

http://www.cafewebmaster.com/check-password-strength-safety-php-and-regex

这就是我会使用的:

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

检查 1 个字母、1 个数字、1 个特殊字符和至少 8 个字符长。

于 2012-11-29T18:40:42.590 回答