密码的正则表达式必须只包含一个大写字符

Regex for password must contain exactly one uppercase character

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

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

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

我怎样才能为一个包含一个大写字符的密码写它呢?


试试这个:

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

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

击穿:

  • (?=[^A-Z]*[A-Z][^A-Z]*$)的位置表示:"整个表达式应该是‘任意数量的非大写字符’,后跟‘一个大写字符’,后跟‘任意数量的非大写字符’"。

试试这个:

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

网址:https://regex101.com/r/v8erhu/1