标准化的国际电话号码字段格式为字符串
Posted
技术标签:
【中文标题】标准化的国际电话号码字段格式为字符串【英文标题】:standardized international phone number field format as a string 【发布时间】:2014-08-24 14:48:35 【问题描述】:我想将电话号码作为唯一用户 ID 存储在我的数据库/应用程序中,该应用程序最初将在美国推出,但最终可能会扩展到其他国家/地区。
我的问题是在存储电话号码时,将号码存储为字符串的弹性方式是什么,这样我就不会与其他国家/地区的任何重复号码重叠。
我最初的想法是这样做
+1(212)555-5555
+countryCode(areaCode)subscriberCode *formatted with a hyphen for u.s numbers
这看起来合理还是有任何陷阱?应该使用空格吗?例如,我无法想象其他国家会在其订阅者代码中使用空格或括号......但也许他们会这样做?如果它遵循 ios 和 android 手机通讯录的标准输出格式也很好。
【问题讨论】:
【参考方案1】:这就是我要说的:
使用加号。它肯定表明国家代码如下,数字不是本地格式。您也可以不存储加号,并在内部决定所有电话号码都将与国家/地区代码一起存储,从而无需加号。 不要在数字存储中使用任何格式。格式化与拨号无关,它使搜索和比较变得更加困难。 在显示时使用 phony_rails 或 phoney 之类的 gem 将数字格式化为本地约定。【讨论】:
我最终保留了括号,因为它是从 ios 原生来的,我不必更改格式【参考方案2】:所以看起来有一个国际标准
http://en.wikipedia.org/wiki/E.164
还有一个可以格式化为该标准的 node.js 库
https://github.com/aftership/node-phone
【讨论】:
注意node-phone仅用于手机检测,创建该lib的目的是为了检测手机号码以发送短信。以上是关于标准化的国际电话号码字段格式为字符串的主要内容,如果未能解决你的问题,请参考以下文章