【问题标题】:Correct regex for a password-type field正确的密码类型字段的正则表达式
【发布时间】:2015-06-14 15:14:59
【问题描述】:

处理密码字段。

字段容器字母(小写、大写)、数字和一些特殊字符的正则表达式如下所示:

^([a-z,A-Z,0-9,#,$,%,&,_,]{8,20})*$

请告诉我,如果我希望每个密码短语至少有一个小写字母、一个大写字母和一个数字,应该如何修改?

例如,对于 3 个字符的长传,它是:

  • 'aB3' - 通过
  • 'ab3' - 失败

【问题讨论】:

    标签: regex passwords


    【解决方案1】:

    您需要使用前瞻,还需要删除字符类中存在的所有逗号。

    ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)[a-zA-Z0-9#$%&_]{8,20}$
    

    请注意,密码长度必须至少为 8 个字符且最多为 20 个字符。

    DEMO

    【讨论】:

    • 谢谢。看起来棒极了!
    【解决方案2】:

    此答案已存档,因为它很糟糕。

    使用+ 令牌,它告诉引擎尝试查找一个或多个前面的令牌。例如:

    ^(?=[a-z]+)(?=[A-Z])+(?=[0-9])+(?=[#$%&_\,\.]*)$
    

    然后,在代码的其他地方使用长度检查来验证长度。

    【讨论】:

    • 而且它还强制进行问题中不打算的排序。
    • 已修改为允许逗号。如果你愿意,你可以把它拿出来。
    • 这两个问题现已修复。
    • 嘿,我给你加了。感谢您的参与 ;-) 我们都在这里学习新知识并为社区做出贡献。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多