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

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

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

【问题讨论】:

【参考方案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的目的是为了检测手机号码以发送短信。

以上是关于标准化的国际电话号码字段格式为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Android 格式化包含国家代码的国际电话号码字符串

我们如何显示国际电话号码格式,如联系人号码格式?

报手机号码时,男性一般是344格式,女性一般是443格式。这是啥意思呀

swift code如何查询?

PHP 将电话号码转换为格式标准

将电话号码转换为格式标准