将电话号码解析为组成部分
我需要一个经过良好测试的正则表达式(首选 .net 风格),或一些其他简单的代码,将美国/加拿大电话号码解析为组成部分,因此:
- 3035551234122
- 1-303-555-1234x122
- (303)555-1234 -122
- 1 (303) 555 -1234-122
等...
全部解析为:
- 区域代码:303
- 交换:555
- 后缀:1234
- 扩展:122
I need a well tested Regular Expression (.net style preferred), or some other simple bit of code that will parse a USA/CA phone number into component parts, so:
- 3035551234122
- 1-303-555-1234x122
- (303)555-1234-122
- 1 (303) 555 -1234-122
etc...
all parse into:
- AreaCode: 303
- Exchange: 555
- Suffix: 1234
- Extension: 122
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
首先删除所有不是数字的内容。 然后所有示例都简化为:
/^1?(\d{3})(\d{3})(\d{4})(\d*)$/
支持所有国家/地区代码稍微复杂一些,但适用相同的一般规则。
Strip out anything that's not a digit first. Then all your examples reduce to:
/^1?(\d{3})(\d{3})(\d{4})(\d*)$/
To support all country codes is a little more complicated, but the same general rule applies.
例如,这是一个与 GeoIP 一起使用的编写良好的库:
http://highway.to/geoip/numberparser。公司
Here is a well-written library used with GeoIP for instance:
http://highway.to/geoip/numberparser.inc
这是 Z Directory (vettrasoft.com) 提供的一种更简单的方法,
针对美国电话号码:
最后一行将号码存储到数据库表“phone_number”中。
列值:country_code =“1”,area_code =“888”,exchange =“872”,
ETC。
here's a method easier on the eyes provided by the Z Directory (vettrasoft.com),
geared towards American phone numbers:
the last line stores the number to database table "phone_number".
column values: country_code = "1", area_code = "888", exchange = "872",
etc.
这个正则表达式与您的示例完全一样:
This regex works exactly as you want with your examples:
这是我使用的:
我相信我是从 RegexLib 那里得到的。
This is the one I use:
I got it from RegexLib I believe.
到目前为止给出的答案对我来说都不够强大,所以我继续寻找更好的东西,然后我找到了它:
Google 处理电话号码的库
希望它对您也有用。
None of the answers given so far was robust enough for me, so I continued looking for something better, and I found it:
Google's library for dealing with phone numbers
I hope it is also useful for you.