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