为了账号安全,请及时绑定邮箱和手机立即绑定

密码REGEX,至少6个字符,至少一个字母和一个数字,并且可以包含特殊字符

密码REGEX,至少6个字符,至少一个字母和一个数字,并且可以包含特殊字符

开心每一天1111 2019-10-19 16:46:56
我需要一个带有条件的正则表达式:最少6个字符,最多50个字符必须包含1个字母必须包含1个数字可能包含!@#$%^&*()_ +等特殊字符目前我有模式: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$但是,它不允许使用特殊字符,有人为此提供良好的正则表达式吗?谢谢
查看完整描述

3 回答

?
jeck猫

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");

}


查看完整回答
反对 回复 2019-10-19
?
不负相思意

TA贡献1777条经验 获得超10个赞

满足以下(通用)密码要求的更优雅,更完善的正则表达式是:


^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d^a-zA-Z0-9].{5,50}$

这里的优雅之处在于您不必对 $ @#等符号进行硬编码。要接受所有符号,您只是在说:“也接受所有非字母数字字符和数字。” 正则表达式的最后部分{5,50}可以轻松更改,并与字符的最小和最大数目相对应:在此特定示例中,直到5个字符为止,正则表达式返回不匹配的字符(即,至少需要6个字符才能进行验证)。同样,在50个字符之后,它也会返回不匹配项。


查看完整回答
反对 回复 2019-10-19
  • 3 回答
  • 0 关注
  • 1804 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信