正则表达式匹配不是由所有相同数字组成的电话号码

时间:2016-09-29 18:57:08

标签: javascript regex

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

我已经想到了这个哦,如此接近,但并不完全存在。

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

唯一失败的地方是当区号完全相同时,其他一切看起来都很好。所以它会在这样的事情上失败(888)123-1234,但会传递(886)123-1234

如何让它接受最后一次支持?

我见过类似的问题

how to Validate a Phone number so that it should not allow all same numerics like 99999999999 or 11111111111 in java

但是这个并不代表()和 - ,它也与我想要的相反。

Regex to block a phone number that contains same digit more than 4 times successively?

这种看起来很有希望,但它并不能解释()和 - 。

1 个答案:

答案 0 :(得分:1)

您可以使用此负前瞻性正则表达式:

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

RegEx Demo

如果从头到尾重复相同的数字,则否定前瞻(?!\1{2}\)\1{3}-\1{4}$)只会使匹配失败。