创建满足多个条件的正则表达式

时间:2016-03-26 05:55:32

标签: php regex preg-match

我正在尝试使用以下限制创建正则表达式,但也许我遗漏了一些东西,因为它会产生错误的输出。

限制:

1)字符串不应仅包含数字

2)字符串不应包含3个以上的特殊字符

3)String没有任何长度超过10个字符的单词(substring)

4)字符串长度必须为3或更大

我创建了一个解决第一点的正则表达式:

/^\d*[a-zA-Z][a-zA-Z\d]*$/

但是我没有添加其他限制2-4。

1 个答案:

答案 0 :(得分:0)

您可以使用像

这样的正则表达式
^(?!\d+$)(?!(?:[^$&%@]*[$&%@]){4})(?!.*\b\w{11}).{3,}$

请参阅regex demo

模式分解:

  • ^ - 字符串开头
  • (?!\d+$) - 不得只有数字(\d+)到字符串末尾($
  • (?!(?:[^$&%@]*[$&%@]){4}) - 一定不能有4个0+非特殊字符序列([^$&%@]*),后跟一个特殊字符
  • (?!.*\b\w{11}) - 在字边界(\w{11}
  • 之后,一定不能包含11个字符(\b
  • .{3,} - 3 +任何字符
  • $ - 字符串结尾