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


147

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


好问题。您能找到答案吗?
Shobhit Puri

1
链接显示最小值为7
LoranceChen

Answers:


121

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

  • 对于以色列:最小电话号码长度(不包括国家/地区代码)为8位数字。- 官方消息 (国家/地区代码972)
  • 对于瑞典:最小电话号码长度(不包括国家代码)为7位数字。- 官方消息来源(国家代码46)

  • 对于所罗门群岛,其5个用于固定电话。- 来源(国家/地区代码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链接在哪里!:-) 谢谢!
AMM 2014年

Yaa,我最近更新了它。抱歉耽搁了。希望能帮助到你。
Shobhit Puri 2014年

@ShobhitPuri我认为Google的图书馆也说“ 2222”是有效数字,因此也许应该有一个最小的长度来检查。
Android开发人员

@androiddeveloper我在libphonenumber.appspot.com上尝试了您的上述电话号码。但它说这不是一个可能的数字。您使用哪个国家/地区代码尝试了该号码?另外,还有两个功能:一个检查其可能的编号,另一个检查其有效的编号。我认为我们不需要长度检查。
Shobhit Puri 2015年

实际上,当我尝试使用以色列国家(地区)代码进行验证时,它显示为有效。也许您可以检查数字类型getPhoneType似乎返回UAN。因此,这2222号是UAN。但是通用访问号码也可以更长。从技术上讲,它似乎是有效数字。因此,您可以自己检查电话号码类型或最小长度。
Shobhit Puri 2015年

15

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

原始帖子

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

此处提供更多信息:https : //en.wikipedia.org/wiki/Telephone_numbering_plan


12
所罗门群岛可以包含8个国家/地区代码(en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands)–
汤姆·

谢谢@TomHeard-修改了我的帖子!
Jamon Holmgren 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.