有效国际电话号码的最短长度是多少?

Posted

技术标签:

【中文标题】有效国际电话号码的最短长度是多少?【英文标题】:What is the minimum length of a valid international phone number? 【发布时间】:2013-01-31 10:33:13 【问题描述】:

我需要验证用户输入的国际电话号码。根据E.164,最大长度为 15 位,但我无法找到有关最小值的任何信息。我只考虑数字,没有加号或分隔符。

【问题讨论】:

好问题。你能找到答案吗? link 显示最小值为 7 【参考方案1】:

根据不同的来源,我认为 E-164 格式的最小长度取决于国家/地区。例如:

对于以色列:电话号码的最短长度(不包括 国家代码)为 8 位数字。 - Official Source (国家代码 972)

瑞典:最小号码长度(不包括 国家代码)为 7 位数字。 - Official Source‎(国家代码 46)

对于所罗门群岛它的 5 用于固定电话。 - Source(国家代码 677)

... 等等。 因此,包括国家代码在内,瑞典的最小长度为 9 位,以色列为 11 位,所罗门群岛为 8 位。

编辑(干净的解决方案):实际上,您可以使用 Google 的 libphonenumber 库,而不是通过不同的检查(如长度等)来验证国际电话号码。它可以直接验证E164格式的电话号码。它将考虑所有因素,如果号码是有效的 E164 格式,您甚至不需要提供国家/地区。这是相当不错! 举个例子:

String phoneNumberE164Format = "+14167129018"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try 
    PhoneNumber phoneNumberProto = phoneUtil.parse(phoneNumberE164Format, null);
    boolean isValid = phoneUtil.isValidNumber(phoneNumberProto); // returns true if valid
    if (isValid) 
        // Actions to perform if the number is valid
     else 
        // Do necessary actions if its not valid 
    
 catch (NumberParseException e) 
    System.err.println("NumberParseException was thrown: " + e.toString());

如果您知道要验证数字的国家/地区,您甚至不需要 E164 格式,并且可以在 .parse 函数中指定国家/地区,而不是传递 null

【讨论】:

天啊,几周前的 Google 链接在哪里! :-) 谢谢! 是的,我最近更新了它。抱歉耽搁了。希望对您有所帮助。 @ShobhitPuri 我认为谷歌的图书馆也说“2222”是一个有效的数字,所以也许应该有一个最小的长度来检查。 @androiddeveloper 我在 libphonenumber.appspot.com 上试过你上面的号码。但它说这不是一个可能的数字。您使用哪个国家/地区代码尝试了该号码?还有两个功能:一个检查它是否是可能的数字,另一个检查它是否有效。我认为我们不需要长度检查。 实际上,当我尝试使用以色列国家代码时,它显示有效。也许您可以查看number types。 getPhoneType 似乎返回了 UAN。所以这个2222号码就是UAN。但通用访问号码也可以更长。从技术上讲,它似乎是有效的数字。因此,您可以自行检查电话号码类型或最小长度。【参考方案2】:

Saint Helena(格式:+290 XXXX)和纽埃(格式:+683 XXXX)的最小长度为 4。

【讨论】:

圣赫勒拿改成5位数字(不包括国家代码)-en.wikipedia.org/wiki/… 根据en.wikipedia.org/wiki/Telephone_numbers_in_Niue,纽埃只有7位数字,包括国家代码。【参考方案3】:

编辑 2015-06-27:最小值实际上是 8,包括国家代码。我的错。

原帖

我使用的最少电话号码是 10 位数。国际用户应始终输入他们的国家/地区代码,据我所知,如果您计算国家/地区代码,则没有少于十位数字的国家/地区。

更多信息在这里:https://en.wikipedia.org/wiki/Telephone_numbering_plan

【讨论】:

所罗门群岛可以有 8 个,包括国家代码 (en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands) 感谢@TomHeard -- 修改了我的帖子!

以上是关于有效国际电话号码的最短长度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

万豪酒店官网是多少?

什么叫移动电话国际区号?

使用java判断输入身份证号位数是不是正确,判断输入是不是有效

在俄罗斯办的卡往中国打电话怎么打不出去

国际电话号码的规则

377 是哪个国家的区号