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

我需要validation用户input的国际电话号码。 根据E.164,最大长度是15位数字,但我无法find有关最小值的任何信息。 我只考虑数字,没有加号或分隔符。

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

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

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

… 等等。 所以包括国家代码在内,瑞典的最小长度是9位,以色列的最小长度是11位,所罗门群岛的最小长度是8位。

编辑(清洁解决scheme) :实际上,您可以使用Google的libphonenumber库 ,而不是通过长度等不同的检查来validation国际电话号码。 它可以直接validationE164格式的电话号码。 它将考虑到所有的事情,如果号码是有效的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()); } 

如果你知道你正在validation数字的国家,你甚至不需要E164格式,可以在.parse函数中指定国家而不是传递null

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

原帖

我使用的最小电话号码是10位数字。 国际用户应该始终把他们的国家代码,据我所知,没有国家代码less于十位的国家。

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

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