Ответ 1
Как и в разных источниках, я думаю, что минимальная длина в формате E-164 зависит от страны. Например,
- Для Израиля: минимальная длина номера телефона (исключая код страны) - 8 цифр. - Официальный источник (Код страны 972)
-
Для Швеции: минимальная длина (исключая код страны) составляет 7 цифр. - Официальный источник (код страны 46)
-
Для Соломоновых островов его 5 для телефонов с фиксированной линией. - Источник (код страны 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
.