Regex 使用正则表达式查找重复数字

Regex 使用正则表达式查找重复数字,regex,Regex,在我的数据库中,我发现有人提交的电话号码只有10个重复号码(55555555或77777777),我想找到一种方法,用正则表达式搜索任何重复10次的号码。这不是最漂亮的正则表达式,但它可以工作 ((?:1){10}|(?:2){10}|(?:3){10}|(?:4){10}|(?:5){10}|(?:6){10}|(?:7){10}|(?:8){10}|(?:9){10}|(?:0){10}) 我认为最好不用正则表达式来实现,比如switch语句 switch (number) {

在我的数据库中,我发现有人提交的电话号码只有10个重复号码(55555555或77777777),我想找到一种方法,用正则表达式搜索任何重复10次的号码。

这不是最漂亮的正则表达式,但它可以工作

((?:1){10}|(?:2){10}|(?:3){10}|(?:4){10}|(?:5){10}|(?:6){10}|(?:7){10}|(?:8){10}|(?:9){10}|(?:0){10})

我认为最好不用正则表达式来实现,比如switch语句

switch (number) {
        case 1111111111:  return true;
                 break;
        case 2222222222:  return true;
                 break;
        case 3333333333:  return true;
                 break;
        case 4444444444:  return true;
                 break;
        case 5555555555:  return true;
                 break;
        case 6666666666:  return true;
                 break;
        case 7777777777:  return true;
                 break;
        case 8888888888:  return true;
                 break;
        case 9999999999:  return true;
                 break;
        case 0000000000: return true;
                 break;
        default: return false;
                 break;
原因是(据我所知)它的速度更快,而且正则表达式也非常讨厌

@"[(1111111111)(2222222222)(3333333333)(4444444444) etc (0000000000)]"

如果您查看的是mysql查询,那么一种方法可以是具有多个ORs的单个查询

SELECT * from users WHERE phone_number='1111111111' OR phone_number='2222222222' OR phone_number='333333333' OR phone_number='4444444444' OR phone_number='5555555555' OR phone_number='666666666' OR phone_number='7777777777' OR phone_number='8888888888' OR phone_number='999999999'

如果这个问题足够重要,您可以使用javascript或php轻松地验证电话条目。唯一的问题是,你将有用户然后创建虚假的电话号码开始

这是一个比我的更好的正则表达式。然而,您不需要?:它在没有it@puser当然可以,但这是一个非捕获组,所以不需要匹配它