匹配相同号码的代表

coc*_*nut 1 java regex

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

822222222
822333444
822222999
Run Code Online (Sandbox Code Playgroud)

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

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

if (number.matches("^((822|654|611)\\d{3}\\d{3})$"))
Run Code Online (Sandbox Code Playgroud)

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

822315487
Run Code Online (Sandbox Code Playgroud)

这不是一个特殊的号码.(不要注意654和611号码,我也需要考虑这些.)

我怎么能这样做?如何构造匹配相同数字3次的正则表达式?

Don*_*ner 5

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

^822(\d)\1{2}(\d)\2{2}$
Run Code Online (Sandbox Code Playgroud)