标准化的国际电话号码字段格式为字符串

时间:2014-08-24 14:48:35

标签: internationalization phone-number

我想将电话号码存储为我的数据库/应用程序中的唯一用户ID,该数据库/应用程序最初将在美国推出,但最终可能会扩展到其他国家/地区。

我的问题是,在存储电话号码时,将数字存储为字符串的弹性方式是什么,以便我没有来自其他国家/地区的任何重复号码重叠。

我最初的想法就是这样做

+1(212)555-5555

+{countryCode}({areaCode}){{subscriberCode}}  *formatted with a hyphen for u.s numbers

这看起来是否合理还是有任何陷阱?应该使用空格?例如,我无法想象其他国家会在其订户代码中使用空格或括号......但也许他们会这样做?如果它遵循ios和Android手机的地址簿的标准输出格式也会很好。

2 个答案:

答案 0 :(得分:1)

这就是我要说的:

  • 使用加号。它肯定地表明国家代码如下,并且数字不是本地格式。您也可以不存储加号并做出内部决定,所有电话号码都将与国家/地区代码一起存储,从而无需加号。
  • 请勿在存储号码时使用任何格式。格式化在拨号时无关紧要,这使得搜索和比较更加困难。
  • 使用phony_railsphoney等宝石在显示时将数字格式化为本地约定。

答案 1 :(得分:0)

所以看起来有一个国际标准

http://en.wikipedia.org/wiki/E.164

可以格式化为该标准的node.js库

https://github.com/aftership/node-phone