0

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

4

3 回答 3

1

如果您查看 mysql 查询,一种方法可能是具有多个 OR 的单个查询。

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 轻松验证电话条目。唯一的问题是您将让用户开始创建假电话号码。

于 2013-10-24T15:29:12.983 回答
1

不是最漂亮的正则表达式,但它有效

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

http://regex101.com/r/mK7iH6

于 2013-10-24T15:06:53.067 回答
0

我认为这最好在没有正则表达式的情况下实现,作为 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)]"
于 2013-10-24T15:07:14.263 回答