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

Create regular expression which satisfy multiple conditions

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

限制:

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

2) 字符串不应包含超过 3 个特殊字符

3) 字符串中没有任何长度超过10个字符的单词(子串)

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

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

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

但是我添加其他限制 2-4 失败了。

您可以使用像

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

regex demo

模式分解:

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