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

200

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


1
链接显示最小值为7。 - LoranceChen
我投票关闭此问题,因为它与编程无关。 - Vega
3
@Vega 用户输入验证是关于编程的内容。 - Daniel Widdis
3个回答

152
根据不同的来源,我认为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

@ShobhitPuri 我认为谷歌的库也认为“2222”是一个有效的数字,因此可能应该检查最小长度。 - android developer
@androiddeveloper 我在libphonenumber.appspot.com上尝试了你提供的电话号码,但是系统提示这不是一个可能的号码。你用哪个国家码来尝试这个号码的呢?另外,这里有两个函数:一个检测号码是否可能存在,另一个则检查号码是否有效。我认为我们没有必要进行长度检查。 - Shobhit Puri
实际上,当我使用以色列国家代码尝试时,它显示为有效。也许您可以检查一下号码类型getPhoneType似乎返回UAN。因此,这个2222号码是UAN。但通用访问号码也可以更长。从技术上讲,它似乎是一个有效的号码。因此,您可以在您的部分检查电话号码类型或最小长度。 - Shobhit Puri
最小数字取决于您所在的国家。如果您只想为以色列做这件事,那么情况会有所不同。再次,这将成为鸡生蛋问题。 - Shobhit Puri
你可能需要更新你的答案,将最小长度设为8,适用于所罗门群岛和库克群岛 - 请参考http://stackoverflow.com/questions/14894899/what-is-the-minimum-length-of-a-valid-international-phone-number/17814276#comment35592897_17734434。 - Bodhi
显示剩余2条评论

35

圣赫勒拿(格式:+ 290 XXXX)和纽埃(格式:+ 683 XXXX)的最小长度为4。


7
圣赫勒拿电话号码变更为5位数字(不包括国家代码)- https://en.wikipedia.org/wiki/Telephone_numbers_in_Saint_Helena_and_Tristan_da_Cunha - Cheok Yan Cheng
7
根据https://en.wikipedia.org/wiki/Telephone_numbers_in_Niue,纽埃的电话号码只有7位数字,包括国家代码。 - lreeder

18

注:2015-06-27的修订版已经改为最少8个数字,包括国家代码。

原始发布内容

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接