Мне нужно подтвердить ввод пользователем международного телефонного номера. Согласно E.164 максимальная длина составляет 15 цифр, но я не смог найти никакой информации о минимуме. Я рассматриваю только цифры, без знака плюс или разделителей.
Мне нужно подтвердить ввод пользователем международного телефонного номера. Согласно E.164 максимальная длина составляет 15 цифр, но я не смог найти никакой информации о минимуме. Я рассматриваю только цифры, без знака плюс или разделителей.
Ответы:
Что касается разных источников, я думаю, что минимальная длина в формате E-164 зависит от страны к стране. Например:
Для Швеции : минимальная длина номера (без кода страны) составляет 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
.
getPhoneType
похоже возвращает UAN. Итак, этот номер 2222 - UAN. Но номера универсального доступа также могут быть длиннее. Технически это кажется верным номером. Так что либо вы можете проверить тип номера телефона или минимальную длину с вашей стороны.
РЕДАКТИРОВАТЬ 2015-06-27: минимум составляет 8, включая код страны. Виноват.
Оригинальный пост
Минимальный номер телефона, который я использую, составляет 10 цифр. Международные пользователи всегда должны указывать свой код страны, и, насколько я знаю, нет стран, в которых меньше десяти цифр, если вы посчитаете код страны.
Более подробная информация здесь: https://en.wikipedia.org/wiki/Telephone_numbering_plan
Минимальная длина составляет 4 для острова Святой Елены (формат: +290 XXXX) и Ниуэ (формат: +683 XXXX).