创建满足多个条件的正则表达式
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,}$
模式分解:
^
- 字符串开头
(?!\d+$)
- 不能只有数字 (\d+
) 到字符串末尾 ($
)
(?!(?:[^$&%@]*[$&%@]){4})
- 不得有 4 个 0+ 非特殊字符 ([^$&%@]*
) 后跟特殊字符 的序列
(?!.*\b\w{11})
- 在单词边界 (\b
) 之后不得有包含 11 个单词字符 (\w{11}
) 的单词
.{3,}
- 3+ 任意字符
$
- 字符串结尾
我正在尝试使用以下限制创建一个正则表达式,但也许我遗漏了一些东西,因为它创建了一个错误的输出。
限制:
1) 字符串不应只包含数字
2) 字符串不应包含超过 3 个特殊字符
3) 字符串中没有任何长度超过10个字符的单词(子串)
4) 字符串长度必须为 3 或更大
我创建了一个解决第一点的正则表达式:
/^\d*[a-zA-Z][a-zA-Z\d]*$/
但是我添加其他限制 2-4 失败了。
您可以使用像
这样的正则表达式^(?!\d+$)(?!(?:[^$&%@]*[$&%@]){4})(?!.*\b\w{11}).{3,}$
模式分解:
^
- 字符串开头(?!\d+$)
- 不能只有数字 (\d+
) 到字符串末尾 ($
)(?!(?:[^$&%@]*[$&%@]){4})
- 不得有 4 个 0+ 非特殊字符 ([^$&%@]*
) 后跟特殊字符 的序列
(?!.*\b\w{11})
- 在单词边界 (\b
) 之后不得有包含 11 个单词字符 (.{3,}
- 3+ 任意字符$
- 字符串结尾
\w{11}
) 的单词