【发布时间】:2017-04-29 16:09:38
【问题描述】:
您好,我在 PHP 中进行了密码强度检查。看起来像这样:
public static function validPass($candidate) {
$r1 = '/[A-Z]/'; //1 upper
$r2 = '/[a-z]/'; //2 lower
$r3 = '/[!@#$%^&*()\-_=+{}:<.>]/'; //1 special char
$r4 = '/[0-9]/'; //1 number
//no space
if (preg_match('/\s/',$candidate)) {
return false;
}
if (preg_match_all($r1, $candidate, $o) < 1) {
return false;
}
if (preg_match_all($r2, $candidate, $o) < 1) {
return false;
}
if (preg_match_all($r3, $candidate, $o) < 1) {
return false;
}
if (preg_match_all($r4, $candidate, $o) < 1) {
return false;
}
return true;
}
所以 1 个大写字母,1 个小写字母,1 个数字,1 个特殊字符,不允许有空格
现在我在前端使用 javascript 验证器,我可以为密码添加的唯一自定义功能是添加正则表达式,因此我必须将其构建到正则表达式中。我试过了,到目前为止:
^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])$
但我不知道如何解决这个问题。对正则表达式执行这些检查的最佳方法是什么?
【问题讨论】:
-
天哪,每个人都讨厌这个。 “您的密码长度必须至少为 24 个字符,至少包含 1 个数字、1 个大写字母、1 个小写字母、1 个特殊字符、1 个玛雅符号和 1 个埃及象形文字,不得以任何方式看起来像您以前的密码,并且将一周后到期。” _离开网站_
-
我不同意 Aa@1 将解析为有效通行证......在这个时代,培训用户使用强密码很重要。尽管你讨厌它。如果每个网站都需要这个,那将是标准
-
尝试一键式 Google 或 Facebook 登录按钮。您必须在便利贴上写不可能的密码对用户来说是一个很大的禁忌。
标签: javascript php regex