3 回答
TA贡献1909条经验 获得超7个赞
也许可以使用单个正则表达式,但这使得很难向用户提供他们不遵循的规则的反馈。像这样的更传统的方法会为您提供反馈,您可以在UI中使用该反馈来告诉用户未满足什么pwd规则:
function checkPwd(str) {
if (str.length < 6) {
return("too_short");
} else if (str.length > 50) {
return("too_long");
} else if (str.search(/\d/) == -1) {
return("no_num");
} else if (str.search(/[a-zA-Z]/) == -1) {
return("no_letter");
} else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+]/) != -1) {
return("bad_char");
}
return("ok");
}
TA贡献1777条经验 获得超10个赞
满足以下(通用)密码要求的更优雅,更完善的正则表达式是:
^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d^a-zA-Z0-9].{5,50}$
这里的优雅之处在于您不必对 $ @#等符号进行硬编码。要接受所有符号,您只是在说:“也接受所有非字母数字字符和数字。” 正则表达式的最后部分{5,50}可以轻松更改,并与字符的最小和最大数目相对应:在此特定示例中,直到5个字符为止,正则表达式返回不匹配的字符(即,至少需要6个字符才能进行验证)。同样,在50个字符之后,它也会返回不匹配项。
添加回答
举报