我已经写了一个用于验证电话号码的正则表达式,但有些错误我不知道是什么。
需要:
ddd-dddd
形式的代码,用于本地电话号码(3位数字短划线,然后4位数字)组的合法分隔符是破折号( - )和空格
例如:(011) 23 55 345-9878
或011-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 ";
}
答案 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国家代码”