Android: проверка длины номера телефона по СТРАНЕ

Как мы можем проверить длину номера мобильного телефона по СТРАНЕ? (Зная, что код страны может быть или не быть частью номера)

Длина может варьироваться в зависимости от страны, а это означает, что должен быть диапазон длины или средство проверки шаблона.

Пример:

  • +1 222 2222 222 (13 цифр) Действительно ✔️
  • 222 2222 222 (12 цифр) Действителен, только если выбран в соответствующей локали ✔️
  • +1 222 2222 2222222 (17 цифр) Недействительно ❌
  • +1 222 2222 (8 цифр) Недействительно ❌

Примечание. Любая идея, где я могу найти диапазон длин мобильных номеров каждой страны.

Спасибо!

Вы проверили это? stackoverflow.com/questions/37765271/…

Darshan 14.12.2020 08:09

Привет @DarShan Мне нужно проверить любой номер мобильного телефона, если его длина находится в диапазоне для каждой страны. Итак, мне может понадобиться список, содержащий все страны с ожидаемой длиной калида. P.S.: Я не могу использовать библиотеки из соображений безопасности.

Charlie Abou Moussa 14.12.2020 08:48

Ссылка перенаправляет вас на полный пример на SO, это не библиотека.

Darshan 14.12.2020 08:49
0
3
4 782
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Учитывая номер мобильного телефона и код страны, вы можете использовать libphonenumeer, библиотеку Google для проверки телефонных номеров; он проверяет длину номера и ловит исключение NumberParseException, если это не правильный номер.

Это их образец того, как его использовать.

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());
}

Здравствуйте, @Zain, так что, например, если ввод swissNumberStr = "044 668 1", возникает исключение? Я попытался разобрать более короткий (недопустимый) номер, и исключение не было выдано. Мне нужен phoneUtil.parse("044 688 1","CH"); бросить исключение. Спасибо!

Charlie Abou Moussa 28.12.2020 15:35
Ответ принят как подходящий

Добавление к ответу @Zain.

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
//  This will check if the phone number is real and its length is valid.
  boolean isPossible = phoneUtil.isPossibleNumber(swissNumberProto);
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());
}

Котлин ответ

val swissNumberStr = "044 668 18 00"
val phoneUtil = PhoneNumberUtil.getInstance()

try {

    val swissNumberPrototype = phoneUtil.parse(swissNumberStr, "CH")

    val isValid = phoneUtil.isValidNumber(swissNumberPrototype)

    if (isValid) {
        // do something
    } else {
        // do something else
    }

} catch (e: NumberParseException) {
    System.err.println("NumberParseException was thrown: $e")
}

Другие вопросы по теме