匹配相同号码的代表

时间:2012-11-26 14:23:31

标签: java regex

我有一堆电话号码,我希望能够判断一个号码看起来“有趣”。我的意思是,一个重复数字的数字。例如:

822222222
822333444
822222999

基本上,822 +两组三个相同的数字。

我正在用JAVA这样做,到目前为止我有这个:

if (number.matches("^((822|654|611)\\d{3}\\d{3})$"))

显然匹配这些数字但它也匹配:

822315487

这不是特殊号码。 (不要注意654和611号码,我也需要考虑它们。)

我该如何解决这个问题?如何构造匹配相同数字3次的正则表达式?

2 个答案:

答案 0 :(得分:5)

核心问题是\d匹配任何数字,因此您说的是任何数字的3倍,而不是相同数字的3倍。所以你需要捕获那个数字,然后重复两次。

^822(\d)\1{2}(\d)\2{2}$

答案 1 :(得分:4)

最后六位数字如下:

(000|111|222|333|444|555|666|777|888|999){2}