我是正则表达式的新手,想要验证一个包含用户密码的字符串,该字符串应包含小写、大写、数字和特殊字符,并且长度必须为 8 个字符,最多为 20 个字符,所以我如何将此正则表达式限制在 8 到 20 个字符之间,这里是正则表达式:
^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*(_|[^w])).+$
在正则表达式的末尾,您有三个符号.+$
这意味着:
- 任何字符 (
.
( - 一个或多个 (
+
( - 字符串结尾 (
$
(。
您希望以一个或多个(+
(为目标,并使用{from, to}
语法将其更改为限制。
因此,对于 8-20 个字符,请使用 {8, 20}
而不是 +
:
^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*(_|[^w])).{8,20}$
请注意,这不是限制密码长度的好做法。密码应始终经过哈希处理,并在数据库中具有固定长度。
该正则表达式末尾的 .+ 表示您希望这些字符"至少一次">
将其更改为 。{8, 20} 为了限制字符数在 8 和 20 之间