1

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

是否可以?

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

            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\.\-\_]+$/"
4

3 回答 3

1

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

/^[a-zA-Z \._\-]+$/
于 2012-04-11T15:28:42.783 回答
0
echo preg_match("/^[A-Za-z0-9 ._-]+$/", '-a. s_d'); // 1

或更缩写:

echo preg_match("/^[\w .-]+$/", '-a. s_d'); // 1
于 2012-04-11T15:29:17.683 回答
0

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

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


这就是你的正则表达式:

[\w .-]+
于 2012-04-11T15:31:07.927 回答