Проверка номера телефона Android

Как проверить, действительно ли номер телефона или нет? Длина до 13 (включая символ + спереди).

Как мне это сделать?

Я пробовал это:

 String regexStr = "^[0-9]$"; String number=entered_number.getText().toString(); if(entered_number.getText().toString().length()<10 || number.length()>13 || number.matches(regexStr)==false ) { Toast.makeText(MyDialog.this,"Please enter "+"\n"+" valid phone number",Toast.LENGTH_SHORT).show(); // am_checked=0; }` 

И я также пробовал это:

 public boolean isValidPhoneNumber(String number) { for (char c : number.toCharArray()) { if (!VALID_CHARS.contains(c)) { return false; } } // All characters were valid return true; } 

Оба не работают.

Тип входа: + sign to be accepted and from 0-9 numbers and length b/w 10-13 and should not accept other characters

Solutions Collecting From Web of "Проверка номера телефона Android"

Учитывая указанные вами правила:

До длины 13 и включая символ + infront.

(А также включая минимальную длину 10 в вашем коде)

Вам понадобится регулярное выражение, которое выглядит так:

 ^\+[0-9]{10,13}$ 

При минимальной и максимальной длинах, закодированных в регулярном выражении, вы можете удалить эти условия из блока if() .

Off Topic: Я бы предположил, что диапазон 10-13 слишком ограничивает поле международного телефонного номера; Вы почти наверняка найдете действительные числа, которые являются длиннее и короче этого. Я бы предложил вам от 8 до 20 человек.

[EDIT] OP указывает, что указанное выше регулярное выражение не работает из-за escape-последовательности. Не знаю, почему, но альтернативой будет:

 ^[+][0-9]{10,13}$ 

[EDIT 2] OP теперь добавляет, что знак + должен быть необязательным. В этом случае регулярное выражение нуждается в вопросительном знаке после + , поэтому приведенный выше пример теперь будет выглядеть так:

 ^[+]?[0-9]{10,13}$ 

Используйте isGlobalPhoneNumber() для PhoneNumberUtils чтобы определить, действителен ли номер телефона или нет.

пример

 System.out.println("....g1..."+PhoneNumberUtils.isGlobalPhoneNumber("+912012185234")); System.out.println("....g2..."+PhoneNumberUtils.isGlobalPhoneNumber("120121852f4")); 

Результат первого оператора печати истинен, а результат второго – false, потому что второй номер телефона содержит f .

Вы можете использовать встроенные Patterns Android:

 public boolean validCellPhone(String number) { return android.util.Patterns.PHONE.matcher(number).matches(); } 

Этот шаблон предназначен для поиска вещей, которые выглядят так, как будто они могут быть номерами телефонов в произвольном тексте, а не для проверки того, действительно ли это номер телефона. Это пропустит многие вещи, которые являются законными номерами телефонов.

Шаблон соответствует следующему:

  • При необходимости знак + следует сразу одной или несколькими цифрами. Могут следовать пробелы, точки или тире.
  • Необязательно, наборы цифр в круглых скобках, разделенные пробелами, точками или тире.
  • Строка, начинающаяся и заканчивающаяся цифрой, содержащая цифры, пробелы, точки и / или тире.

Чтобы проверить номера телефонов для определенного региона в Android, используйте libPhoneNumber от Google и следующий код в качестве примера:

 public boolean isPhoneNumberValid(String phoneNumber, String countryCode) { //NOTE: This should probably be a member variable. PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { PhoneNumber numberProto = phoneUtil.parse(phoneNumber, countryCode); return phoneUtil.isValidNumber(numberProto); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } return false; } 

Вы также можете проверить валидацию номера телефона как

 /** * Validation of Phone Number */ public final static boolean isValidPhoneNumber(CharSequence target) { if (target == null) { return false; } else { if (target.length() < 6 || target.length() > 13) { return false; } else { return android.util.Patterns.PHONE.matcher(target).matches(); } } } 

Вы можете использовать PhoneNumberUtils если ваш формат телефона является одним из описанных форматов. Если ни одна из функций утилиты не соответствует вашим потребностям, используйте регулярные выходы.

Мы можем использовать шаблон для его проверки.

android.util.Patterns.PHONE

 public class GeneralUtils { private static boolean isValidPhoneNumber(String phoneNumber) { return !TextUtils.isEmpty(phoneNumber) && android.util.Patterns.PHONE.matcher(phoneNumber).matches(); } } 

Вы можете использовать эту библиотеку . Все, что вам нужно, это передать страну и номер телефона, которые вы хотите проверить.

При проверке номеров телефонов вы не должны использовать регулярные выражения. Проверьте этот JSON API – numverify.com – он бесплатный для нунвера, если звонки в месяц и возможность проверки любого номера телефона. Кроме того, каждый запрос содержит местоположение, тип линии и информацию о несущей.