我正在尝试使用正则表达式来填充以下条件:
1- string必须长8个字符
2-所有字符必须是数字
3-任何数字不得重复8次 (即:11111111,禁止22222222)
禁止使用4至1套房 (即:12345678)
禁止使用5-8对1套房 (即:不允许87654321)
到目前为止,我正在使用这个正则表达式1,2和& 3:
^(?=.{8})(\d)(?!\1{7})\d{7}$
这一点适用于第4点和第4点。 5:
^(?!(12345678$|87654321$))
但是我不能将它们组合在一个较长的正则表达式中。这就是为什么我在大脑爆炸前来到这里寻求帮助的原因。 谢谢你的帮助。
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以使用此模式:
^(?=[0-9]{8}$)(?!12345678|87654321).*?(.)(?!\1).+
另一种方式(如果支持):
^(?=[0-9]{8}$)(.)\1*+.++(?<!12345678|87654321)
第二种模式背后的想法是将条件从最严格/可能的条件分类到较少限制/可能的条件。
正则表达式引擎需要支持占有量词和第二种模式的后视。
答案 2 :(得分:1)
答案 3 :(得分:1)
这是另一种方式
# ^(?=\d{8}$)(?!(\d)\1{7}|12345678|87654321).*$
^
(?= \d{8} $ )
(?!
( \d ) # (1)
\1{7}
| 12345678
| 87654321
)
.*
$