php中的正则表达式关于密码字段


Regex in php about password field

我需要一个允许用户在字段中插入密码的正则表达式。但是唯一允许的正则表达式是 [A-Za-z0-9] ok,还有"空格"、"."、"_"、"-"。怎么可能允许我列出的特殊字符,但不强制用户使用它?另一方面,不允许所有其他特殊字符。

可能吗?

使用此代码,我检查了密码的质量,但不足以满足我的目标,因为我无法管理特殊字符:

            else if ($check_strength && (!preg_match("/[0-9]/", $newpwd) || !preg_match("/[^A-Za-z0-9]/", $newpwd))) {
            $rcmail->output->command('display_message', $this->gettext('passwordweak'), 'error');
        }

我已经解决了我的问题:

"/^[A-Za-z0-9'.'-'_]+$/"

如果我理解正确,这个正则表达式会这样做:

/^[a-zA-Z '._'-]+$/
echo preg_match("/^[A-Za-z0-9 ._-]+$/", '-a. s_d'); // 1

或更缩写:

echo preg_match("/^['w .-]+$/", '-a. s_d'); // 1

您不应该使用正则表达式"检查"用户的密码。我建议您使用指标检查强度,并确保它被认为是"足够强大"的(例如,指标查看此站点)。

这样,用户的密码中可以包含任何字符。您不应该真正关心用户在其密码中选择的字符,无论如何您都会对其进行哈希处理,因此它不会影响您。


也就是说,这是您的正则表达式:

['w .-]+