如何计算RegEx中字符串的长度?

时间:2017-07-02 05:29:40

标签: php regex validation passwords

这是我的模式:

^(?=.*[a-z])(?=.*[A-Z]).+$

这是密码验证。如你所知:

^匹配字符串的开头

(?=.*[a-z])检查字符串中的某个地方是否为小写字符

(?=.*[A-Z])检查字符串中的某个字符是否为大写字符

现在我需要在模式中添加一些计数条件。我的意思是,我需要数数:

  1. 整个字符串的长度应超过6个字符。 (我想我应该使用类似{6,}的内容,但我不知道应该如何使用它)
  2. 大写字母数量应至少为三个。 (这个条件不是很重要,如果实施那么难,我可以忽略它)
  3. 我该怎么做?

2 个答案:

答案 0 :(得分:2)

量词是关键。你可以使用{6,}作为第一个条件的匹配模式,并为你的第二个条件扩展你的第二个前瞻,比如

^(?=.*[a-z])(?=(?:[^A-Z]*[A-Z]){3}).{6,}$

请参阅https://regex101.com/r/DjSqbr/1

注意:我已将[^A-Z]扩展为[^A-Z\r\n],以便与多行字符串一起正常使用。

答案 1 :(得分:-1)

试试这个:

^(?=.*[a-z])(?=(.*[A-Z]){3,}).{6,}$

您可以查看here