验证电话号码的模式检查

时间:2013-10-23 04:02:15

标签: perl

我已经写了一个用于验证电话号码的正则表达式,但有些错误我不知道是什么。 需要:

  1. 领先'011'国家/地区代码,可以在括号中或不使用paranethesis
  2. 1-3位国家代码
  3. 2位数城市代码
  4. ddd-dddd形式的代码,用于本地电话号码(3位数字短划线,然后4位数字)
  5. 组的合法分隔符是破折号( - )和空格 例如:(011) 23 55 345-9878011-3-33-987-6543

    以下是我的尝试:

    if($_ =~ /^:?([011]:?){1}[ -]+[0-9]\d{2}+[ -]+[0-9]\d{2}+[0-9]\d{3}-[0-9]\d{4}/){
        say "Line5 Good: ", $currLine;
    } else {
        say "Error in Line 5: Not a valid phone number ";
    }
    

2 个答案:

答案 0 :(得分:1)

这个正则表达式测试好了 - 随意调整它的味道:

(\(011\)|^011)([ |-])\d?\d?\d([ |-])\d{2}([ |-])\d{3}([ |-])\d{4}

(\(011\)|^011)确保在数字的开头只接受(011)或011,因此不应担心所有其他排列,例如011,011)等,悄悄进入。其余的照顾你想要的格式。我可能已经过了一点董事会,或者我只是觉得小组更容易阅读...

您可以在此处自行测试:http://gskinner.com/RegExr/?36s51

对Roberto Navarro的欢呼让我转向gskinner.com。

答案 1 :(得分:0)

这应该是正则表达式:\(?011\)?[ -]\d?\d?\d?[ -]\d{2}[ -]\d{3}[ -]\d{4}

在此处验证:http://gskinner.com/RegExr/但我找不到向您发送链接的方法。

截图:)顺便说一句,蓝色突出显示表示匹配,因此在这种情况下,所有条件都匹配。截图中的错字,它应该说,“失败的匹配更多3国家代码”

enter image description here