我正在尝试创建一个匹配7-15位数字的正则表达式,该数字不能包含所有相同的数字,最后7位数字不能相同。我为数字制作了两个正则表达式,所有数字都不能相同。我所做的正则表达式是:
/^(?!(.)\1+$)^(|[0-9]{7,15})$/
。
对于最后七位数字不能相同,我所做的正则表达式是:
/^(?!.*(\d)\1{6}\b)^[0-9]{0,15}$/
。
但问题是我无法使正则表达式完全满足两个条件,即所有数字不能包含所有相同的数字,最后7位数不能相同。
请建议如何做到这一点。
答案 0 :(得分:0)
似乎你可以在负前瞻中使用交替运算符来检查两个条件:
^(?!(\d)\1+$|\d*(\d)\2{6}$)(?:\d{7,15})?$
请参阅regex demo。
<强>详情:
^
- 字符串开头(?!(\d)\1+$|\d*(\d)\2{6}$)
- 如果从开始到结束的所有数字都相同((\d)\1+$
,其中(\d)
将数字捕获到第1组然后\1+
匹配在第1组中捕获的一个或多个值,然后使用$
)结束字符串检查,或者如果只有最后7个相同(请参阅\d*(\d)\2{6}$
其中\d*
匹配0+位, (\d)
将数字捕获到第2组,然后\2{6}
匹配第2组中捕获的6个值,然后使用$
结束字符串检查(?:\d{7,15})?
- 一个匹配7到15位数的可选组(或一个空字符串,因为它是可选的)$
- 字符串结束。