我需要验证国际电话号码的用户输入。根据E.164,最大长度为15个数字,但我找不到任何有关最小长度的信息。 我只考虑数字,没有加号或分隔符。
我需要验证国际电话号码的用户输入。根据E.164,最大长度为15个数字,但我找不到任何有关最小长度的信息。 我只考虑数字,没有加号或分隔符。
编辑(清洁解决方案):实际上,与其通过不同的检查(如长度等)来验证国际电话号码,您可以使用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());
}
.parse
函数中指定国家而不是传递null
。getPhoneType
似乎返回UAN。因此,这个2222号码是UAN。但通用访问号码也可以更长。从技术上讲,它似乎是一个有效的号码。因此,您可以在您的部分检查电话号码类型或最小长度。 - Shobhit Puri圣赫勒拿(格式:+ 290 XXXX)和纽埃(格式:+ 683 XXXX)的最小长度为4。
注:2015-06-27的修订版已经改为最少8个数字,包括国家代码。
原始发布内容
我使用的电话号码最少有10位数字。 国际用户应始终输入其国家代码,据我所知,如果计算国家代码,则没有少于10位数的国家。
更多信息请参见:https://en.wikipedia.org/wiki/Telephone_numbering_plan