La guía paso a paso o código que encontrarás en este post es la resolución más rápida y válida que encontramos a tus dudas o problema.
Solución:
Usar isGlobalPhoneNumber()
método de PhoneNumberUtils
para detectar si un número es un número de teléfono válido o no.
Ejemplo
System.out.println("....g1..."+PhoneNumberUtils.isGlobalPhoneNumber("+912012185234"));
System.out.println("....g2..."+PhoneNumberUtils.isGlobalPhoneNumber("120121852f4"));
El resultado de la primera declaración de impresión es true mientras que el resultado de la segunda es false porque el segundo número de teléfono contiene f
.
Dadas las reglas que especificó:
hasta 13 de longitud e incluyendo carácter + delante.
(y también incorporando la longitud mínima de 10 en su código)
Vas a querer una expresión regular que se vea así:
^+[0-9]10,13$
Con las longitudes mínima y máxima codificadas en la expresión regular, puede eliminar esas condiciones de su if()
cuadra.
Fuera de tema: sugeriría que un rango de 10 a 13 es demasiado limitante para un campo de número de teléfono internacional; es casi seguro que encontrará números válidos que sean más largos y más cortos que este. Sugeriría un rango de 8 a 20 para estar seguro.
[EDIT]
OP indica que la expresión regular anterior no funciona debido a la secuencia de escape. No estoy seguro de por qué, pero una alternativa sería:
^[+][0-9]10,13$
[EDIT 2]
OP ahora agrega que el +
El signo debe ser opcional. En este caso, la expresión regular necesita un signo de interrogación después de la +
por lo que el ejemplo anterior ahora se vería así:
^[+]?[0-9]10,13$
Para validar números de teléfono para una región específica en Android, use libPhoneNumber de Google y el siguiente código como ejemplo:
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;
valoraciones y reseñas
Agradecemos que quieras corroborar nuestra función fijando un comentario o dejando una valoración te damos la bienvenida.