如何设置正则表达式的限制? (最小和最大长度)

时间:2019-04-18 09:17:12

标签: regex

我是regex的新手,想验证一个包含用户密码的字符串,该字符串应包含小写,大写,数字和特殊字符,并且长度必须为8个字符,最大为20个字符,那么如何在此之间限制此regex?正则表达式是8和20个字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$

2 个答案:

答案 0 :(得分:1)

在正则表达式的末尾,您有三个符号.+$

这意味着:

  • 任何字符(.
  • 一个或多个(+
  • 字符串结尾($)。

您要定位一个或多个(+),并使用{from, to}语法将其更改为限制。

因此,对于8-20个字符,请使用{8, 20}而不是+

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).{8,20}$

请注意,限制密码长度的最佳做法是。密码应始终为哈希值,并且在数据库中具有固定的长度。

答案 1 :(得分:0)

该正则表达式末尾的。+表示您希望这些字符“至少一次”

将其更改为。{8,20},以将字符数限制在8到20之间。