正则表达式用于检查数字是否相同且最后7位数不相同的电话号码

时间:2016-10-17 09:17:45

标签: javascript regex phone-number

我正在尝试创建一个匹配7-15位数字的正则表达式,该数字不能包含所有相同的数字,最后7位数字不能相同。我为数字制作了两个正则表达式,所有数字都不能相同。我所做的正则表达式是:

/^(?!(.)\1+$)^(|[0-9]{7,15})$/

对于最后七位数字不能相同,我所做的正则表达式是:

/^(?!.*(\d)\1{6}\b)^[0-9]{0,15}$/

但问题是我无法使正则表达式完全满足两个条件,即所有数字不能包含所有相同的数字,最后7位数不能相同。

请建议如何做到这一点。

1 个答案:

答案 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位数的可选组(或一个空字符串,因为它是可选的)
  • $ - 字符串结束。