【发布时间】:2014-08-20 12:19:19
【问题描述】:
我想出了我所在国家/地区电话的常规表达方式,但我缺少一些东西。
这里的规则是:(Area Code) Prefix - Sufix
- 区号可以是 3 到 5 位数字
- 前缀可以是 2 到 4 位数字。
- 区号 + 前缀长度为 7 位。
- 后缀始终为 4 位数字
- 总位数为 11。
我想我可以将 3 个简单的正则表达式与 OR "|" 链接起来像这样:
/(\(?\d{3}\)?[- .]?\d{4}[- .]?\d\d\d\d)|(\(?\d{4}\)?[- .]?\d{3}[- .]?\d\d\d\d)|(\(?\d{5}\)?[- .]?\d{2}[- .]?\d\d\d\d)/
我做错的事情是 \d\d\d\d 不匹配仅 4 位数字的后缀,例如:(011) 4740-5000 这是一个有效的电话号码,可以,但如果添加额外的数字它也将作为有效的电话号码返回,即:(011) 4740-5000000000
【问题讨论】:
-
看起来通用后缀
\d\d\d\d在所有三种模式中都重复出现了。aX|bX|cX就是(a|b|c)X。为什么\d\d\d\d而不是\d{4}? -
真正的问题是电话号码从未如此简单。 Wikipedia:Telephone numbers in Argentina你确定要这么严格吗?
标签: regex phone-number