我需要验证国际电话号码的用户输入。根据{{3}},最大长度为15位,但我无法找到有关最小值的任何信息。我只考虑数字,没有加号或分隔符。
答案 0 :(得分:96)
根据不同来源,我认为E-164格式的最小长度取决于国家/地区。例如:
对于瑞典:最小数量长度(不包括 国家代码)是7位数。 - Official Source(国家/地区代码46)
所罗门群岛其固定电话的5个。 - Source(国家/地区代码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
。
答案 1 :(得分:11)
编辑2015-06-27:最低为8,包括国家/地区代码。我的坏。
原帖
我使用的最小电话号码是10位数。国际用户应始终使用其国家/地区代码,据我所知,如果您计算国家/地区代码,则不会有少于十位的国家/地区。
此处有更多信息:https://en.wikipedia.org/wiki/Telephone_numbering_plan
答案 2 :(得分:5)
圣赫勒拿(格式:+290 XXXX)和纽埃(格式:+683 XXXX)的最小长度为4。