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

Sli*_*ggy 136 validation

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

Sho*_*uri 108

根据不同来源,我认为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());
}
Run Code Online (Sandbox Code Playgroud)

如果您知道要验证号码的国家/地区,您甚至不需要E164格式,并且可以在.parse功能中指定国家/地区而不是通过null.


Jam*_*ren 12

编辑2015-06-27:最低为8,包括国家代码.我的错.

原帖

我使用的最小电话号码是10位数.国际用户应始终使用其国家/地区代码,据我所知,如果计算国家/地区代码,则不会有少于十位的国家/地区.

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

  • 所罗门群岛可以有8个国家代码(http://en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands) (11认同)
  • 新喀里多尼亚:9(包括国家代码) (3认同)

小智 8

圣海伦娜(格式:+290 XXXX)和纽埃(格式:+683 XXXX)的最小长度为4。

  • 根据https://en.wikipedia.org/wiki/Telephone_numbers_in_Niue的规定,纽埃只有7位数字,包括国家/地区代码。 (4认同)
  • 圣海伦娜更改为5位数字(国家代码除外)-https://en.wikipedia.org/wiki/Telephone_numbers_in_Saint_Helena_and_Tristan_da_Cunha (2认同)