【问题标题】:Phone number format and validation library [closed]电话号码格式和验证库[关闭]
【发布时间】:2010-10-04 19:43:05
【问题描述】:

This question 在 Java 中询问电话号码格式的 API 让我想知道为什么这样的 API 似乎不存在。鉴于Apache Commons 下可用的validation 类的数量,我原以为会包含这样的API。

我的问题是,有谁知道任何语言提供的电话号码格式/验证库可以用作小型 Java 开源项目的模型吗?此外,除了全世界使用的大量不同电话号码格式之外,有没有人知道这样一个项目不可行的任何原因?

【问题讨论】:

    标签: phone-number


    【解决方案1】:

    Google 最近发布了 libphonenumber,用于解析、格式化、存储和验证国际电话号码。

    【讨论】:

    • 我使用 libphonenumber 它占用了 3MB ...这对我来说似乎太多了
    【解决方案2】:

    任何语言的此类 API:Number::Phone(示例子模块:Number::Phone::US)。

    数据:ITU 的National Numbering Plans 索引。

    【讨论】:

    • 废话,有很多国家。 :)
    • 感谢国际电联的链接,甚至卡塔尔的数据也是最新的(这种情况很少见)。
    【解决方案3】:

    http://www.geonames.org/ 他们有一个可以下载的数据库,国家信息数据集中包含电话号码的 regEx 规则。

    http://download.geonames.org/export/dump/

    查找“countryInfo.txt”文件。

    我建议你在此基础上构建自己的验证器。

    【讨论】:

    • Woops... 抱歉,RegEx 适用于邮政编码。虽然ie它countains国家电话前缀。 +45 丹麦
    【解决方案4】:

    就像另一个问题的答案中所说的那样,没有人见过 Java,而且就像你说的那样,由于世界各地电话号码格式的差异,这几乎是不可能的。

    如果您知道目标区域的不同格式,那么在正则表达式中实现它通常很容易。

    【讨论】:

      【解决方案5】:

      您可以在此处查看 Parsify 格式 - https://www.mashape.com/parsify/format#endpoint-Phone-Number

      它将以多种格式返回您的号码,例如

      { "e164": "+1234567890", “国家”:“234567890”, “国际”:“+1 234567890”, “有效”:假, “类型”:“未知” }

      如果是实数,您可以获得更广泛的响应

      【讨论】:

      • 感谢您发布您的答案!请务必仔细阅读FAQ on Self-Promotion。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。
      【解决方案6】:

      电话输入栏:

      <input class="left" id="field" name="field" />
      

      jquery 脚本:

      jQuery.validator.addMethod("phoneUS", function(phone_number, element) { phone_number = phone_number.replace(/\s+/g, ""); 返回 this.optional(element) || phone_number.length > 9 && phone_number.match(/^(1-?)?(([2-9]\d{2})|[2-9]\d{2})-?[2-9]\d{2}- ?\d{4}$/); }, "请指定一个有效的电话号码");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2012-07-26
        • 2011-08-16
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多