我需要编写一个完全满足以下条件的正则表达式:
- 值将是一个正好 6 位的数字
- 不允许连续 6 位数字(例如 123456、654321、234567 等不允许)
- 不超过 2 个重复数字允许(例如 111234、123444、123334 不允许,但 112345、123455、123345 是允许的)
我正在尝试编写此正则表达式,但失败了。请注意,我可以单独为该条件编写正则表达式,但我需要一个组合正则表达式。请尽快帮助我。
我得到了一个只满足我的第一个和第二个标准的解决方案:
string re = @"(?x)
^
# fail if...
(?!
# repeating numbers
0{3,}|1{3,}|2{3,}|3{3,}|4{3,}|5{3,}|6{3,}|7{3,}|8{3,}|9{3,}$
|
# sequential ascending
(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){5} \d $
|
# sequential descending
(?:0(?=9)|1(?=0)|2(?=1)|3(?=2)|4(?=3)|5(?=4)|6(?=5)|7(?=6)|8(?=7)|9(?=8)){5} \d $
)
# match any other combinations of 6 digits
\d{6}
$
";
但是,我需要完全满足我的 3 个标准的完整解决方案(组合正则表达式)。