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

Validation 有效国际电话号码的最小长度是多少?,validation,Validation,我需要验证用户输入的国际电话号码。根据,最大长度为15位,但我找不到关于最小长度的任何信息。我只考虑数字,没有加号或分隔符。 < P> 编辑2015-0627:最小值实际上是8,包括国家代码。我的错。 原职 我使用的最小电话号码是10位数。国际用户应该总是输入他们的国家代码,据我所知,如果你计算国家代码,没有国家的数字少于10位 更多信息:根据不同来源,我认为E-164格式的最小长度取决于国家/地区。例如: 对于以色列:最小电话号码长度(不包括 国家/地区代码)是8位数字。- (国家代码972

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

< P> <强>编辑2015-0627:最小值实际上是8,包括国家代码。我的错。

原职

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


更多信息:根据不同来源,我认为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格式,可以在
函数中指定国家,而不是传递
null
圣赫勒拿(格式:+290 XXXX)和纽埃(格式:+683 XXXX)的最小长度为4

好问题。你能找到答案吗?显示最小值是7所罗门群岛可以有8个,包括国家代码()谢谢@TomHeard--修改了我的帖子!天哪,几周前谷歌的链接在哪里!:-)谢谢是啊,我最近更新了。抱歉耽搁了。希望能有帮助。@ShobhitPuri我想谷歌的图书馆也说“2222”是一个有效的数字,所以也许应该有一个最小长度来检查。@androiddeveloper我在libphonenumber.appspot.com上试过你上面的数字。但它说这不是一个可能的数字。你是用哪个国家代码打那个号码的?还有两个函数:一个检查它是否是一个可能的数字,另一个检查它是否有效。我认为我们不需要长度检查。事实上,当我尝试使用以色列国家代码时,它显示有效。也许你可以查一下电话号码
getPhoneType
似乎返回UAN。所以这个2222是UAN。但普及电话号码也可能更长。从技术上讲,这似乎是一个有效的数字。因此,您可以检查电话号码类型或您自己的最小长度。圣赫勒拿更改为5位数字(不包括国家代码)-根据,纽埃岛只有7位数字,包括国家代码。