Regex来匹配不是由所有相同号码组成的电话号码

Regex to match a phone number that is not composed of all the same number

本文关键字:号码 电话号码 Regex      更新时间:2023-09-26

我需要一个正则表达式,将匹配电话号码,不都是由相同的数字组成。我说的是一个10位数的电话号码,看起来像这样(123)123-1234。我已经看到了与都是的手机匹配的模式,但我正试图匹配相反的模式。

我想到了这个,哦,很接近,但不是很好。

^'(('d)(?!'1{2})'d{2}')(?!'1{3})'d{3}-(?!'1{4})'d{4}$

唯一失败的地方是当区号都是相同的数字时,其他一切似乎都工作得很好。所以它会在(888)123-1234这样的地方失败,但会通过(886)123-1234

我怎样才能让它接受最后的坚持?

我见过类似的问题

如何验证电话号码,使其不允许所有相同的数字,如java中的99999999999或11111111111

但是这个没有考虑到()和-,而且它匹配的与我想要的相反。

Regex阻止一个电话号码包含相同的数字超过4次连续?

这种方法看起来很有希望,但它没有解释()和-。

你可以使用这个反向向前看的正则表达式:

^'(('d)(?!'1{2}')'1{3}-'1{4}$)'d{2}')'d{3}-'d{4}$

RegEx演示

负向前看(?!'1{2}')'1{3}-'1{4}$)只有在从头到尾重复相同数字时才会匹配失败。