将Regex限制为8到15个字符长

时间:2017-06-08 13:08:53

标签: regex

我有以下正则表达式检查密码复杂性。

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])){8,15}.+$
  1. 至少一个小写
  2. 至少一个大写
  3. 至少一个Symb0l
  4. 至少1个号码
  5. 但我也想限制它只允许以上所有加上长度。有效长度为8到15之间的任何值。

    我已尝试添加{8,15},但这似乎无法奏效!我做错了什么?

1 个答案:

答案 0 :(得分:3)

你错位了量词:

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

此外,(_|[^\w])[_\W]相同。

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • (?=.*[a-z]) - 至少1个小写ASCII字母
  • (?=.*[A-Z]) - 至少1个大写ASCII字母
  • (?=.*\d) - 至少1位
  • (?=.*[_\W]) - 至少1个“特殊”,非字母数字,字符
  • .{8,15} - 除了换行符之外的任何8到15个字符
  • $ - 字符串结束。