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

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

147990 次浏览

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

原文

我使用的最低电话号码是10位数。国际用户应该总是输入他们的国家代码,据我所知,如果你把国家代码计算在内,没有一个国家的数字小于10位。

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

根据不同的来源,我认为 E-164格式的最小长度取决于国与国之间的差异。例如:

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

  • 为所罗门群岛 其5为固定电话。-来源(国家代码677)

诸如此类。 所以包括国家代码,最小长度是瑞典9位,以色列11位,所罗门群岛8位。

编辑(清洁解决方案) : 实际上,您可以使用 谷歌的图书馆来验证国际电话号码,而不是通过不同的检查(如长度等)来验证。它可以直接验证 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

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