加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 复杂密码正则表达式

发布时间:2020-12-14 06:38:24 所属栏目:百科 来源:网络整理
导读:创建符合以下规则的密码的正则表达式有以下条件: 密码必须是8个字符长(我可以做:-))。 密码必须包含以下4个规则中至少3个的字符: 大写 小写 数字 非字母数字 我可以使用以下表达式使表达式匹配所有这些规则: /^(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.[W]).{
创建符合以下规则的密码的正则表达式有以下条件:

>密码必须是8个字符长(我可以做:-))。

密码必须包含以下4个规则中至少3个的字符:

>大写
>小写
>数字
>非字母数字

我可以使用以下表达式使表达式匹配所有这些规则:

/^(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.[W]).{8,}$/

但是我正在努力解决如何做到这一点,只需要解决4个规则中的任何3个。

任何人可以帮助我这个?

不要使用一个正则表达式来检查它。
if (password.length < 8)
  alert("bad password");
var hasUpperCase = /[A-Z]/.test(password);
var hasLowerCase = /[a-z]/.test(password);
var hasNumbers = /d/.test(password);
var hasNonalphas = /W/.test(password);
if (hasUpperCase + hasLowerCase + hasNumbers + hasNonalphas < 3)
  alert("bad password");

如果您必须使用单个正则表达式:

^(?:(?=.*[a-z])(?:(?=.*[A-Z])(?=.*[dW])|(?=.*W)(?=.*d))|(?=.*W)(?=.*[A-Z])(?=.*d)).{8,}$

这个正则表达式没有针对效率进行优化。由A·B·C A·B·D A·C·D B·C·D构成,并进行一些分解。分解:

^
(?:
    (?=.*[a-z])       # 1. there is a lower-case letter ahead,(?:               #    and
        (?=.*[A-Z])   #     1.a.i) there is also an upper-case letter,and
        (?=.*[dW])  #     1.a.ii) a number (d) or symbol (W),|                 #    or
        (?=.*W)      #     1.b.i) there is a symbol,and
        (?=.*d)      #     1.b.ii) a number ahead
    )
|                     # OR
    (?=.*W)          # 2.a) there is a symbol,and
    (?=.*[A-Z])       # 2.b) an upper-case letter,and
    (?=.*d)          # 2.c) a number ahead.
)
.{8,}                 # the password must be at least 8 characters long.
$

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读