【问题标题】:Regex for password must contain exactly one uppercase character密码的正则表达式必须只包含一个大写字符
【发布时间】:2018-09-17 14:57:56
【问题描述】:

我想要一个正则表达式来检查:

密码只包含一个大写字符,至少包含一个特殊字符 (#, @, -),密码长度必须至少为 8 个符号!

(?=.[A-Z]{1}?)(?=.*[#@-])[A-Za-z#@-]{8,}

如果密码包含恰好一个大写字符,我该如何编写?

【问题讨论】:

标签: regex passwords


【解决方案1】:

试试这个:

^(?=[^A-Z]*[A-Z][^A-Z]*$)(?=.*[#@-])[A-Za-z#@-]{8,}$

演示:https://regex101.com/r/Fr6znT/1

细分:

  • (?=[^A-Z]*[A-Z][^A-Z]*$) 在它所在的位置表示:“整个表达式应该是'任意数量的非大写字符',后跟'一个大写字符',然后是'任意数量的非大写字符'”.

【讨论】:

    【解决方案2】:

    试试这个:

    ^(?=(?=.*[@#-]{1,})[\S]{8,})([a-z@#-]*[@#-]*[A-Z][a-z@#-]*[@#-]*)$
    

    https://regex101.com/r/v8Erhu/1

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2021-04-21
      • 2015-05-26
      • 2021-09-08
      相关资源
      最近更新 更多