正则表达式检查长度在范围内

Kid*_*lly 3 regex

这些是要求:

  • 1 大写
  • 1 小写
  • 1 特殊字符
  • 1 个数字 (0-9)
  • 总长度为12-16

我目前有这个表达式,它按预期工作:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)
Run Code Online (Sandbox Code Playgroud)

这会检查除长度之外的所有内容,因此这是有效的Aa2@

如何添加12-16个字符的长度检查?

anu*_*ava 5

你的正则表达式是:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)
Run Code Online (Sandbox Code Playgroud)

这些是一组前瞻断言,用于强制执行您的需求的某些规则。但是,该正则表达式不会消耗匹配中的任何字符,因此您可以使用.{12,16}\S{12,16}范围量词来将输入限制为12字符16。因此,以下解决方案应该适合您:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)
Run Code Online (Sandbox Code Playgroud)

A.将匹配任何字符,但\S仅匹配非空白字符。