La validación de números de teléfono es un requisito previo común en las aplicaciones web, móviles o de escritorio actuales, pero Java no tiene un método integrado para llevar a cabo este tipo de validación común. Entonces, tenemos que usar algunas bibliotecas de código abierto para realizar dicha validación. Una de esas bibliotecas es la biblioteca de números de teléfono de Google. Ayuda a verificar cualquier número de teléfono, ya sea extranjero, específico de la India o específico de cualquier país.
También podemos usar expresiones regulares para validar los números de teléfono, pero se requieren algunas habilidades para escribir expresiones tan complejas y luego la prueba sería una tarea interminable.
libphonenumber es una biblioteca de código abierto de Google para formatear, analizar y validar números de teléfono internacionales. Contiene muchos métodos para lograr dicha funcionalidad. Algunos de ellos se discuten a continuación:
Tipo de retorno |
Método |
Descripción |
---|---|---|
Cuerda |
format(Número de teléfono.Número de teléfono, PhoneNumberUtil.PhoneNumberFormat numberFormat) |
Utiliza las reglas predeterminadas para dar formato a un número de teléfono en el formato especificado. |
Cuerda | formatNumberForMobileDialing(Phonenumber.PhoneNumber number, java.lang.String regionCallingFrom, boolean withFormatting) | Devuelve el número en una string formateada de modo que se pueda marcar desde un teléfono celular en esa región. |
booleano | isMobileNumberPortableRegion(java.lang.String regionCode) | Si la región pasada como argumento admite la portabilidad de números móviles, el método devuelve verdadero. |
booleano | isNumberMatch(Phonenumber.PhoneNumber firstNumberIn, Phonenumber.PhoneNumber secondNumberIn) | Toma dos números de teléfono y los verifica para la igualdad |
booleano | isPossibleNumber(java.lang.CharNúmero de secuencia, java.lang.String regionDialingFrom) | Verifique que un número de teléfono sea un número posible dado en forma de string y la región desde la que se puede marcar el número. |
booleano | isValidNumberForRegion(Phonenumber.PhoneNumber number, java.lang.String regionCode) | Comprueba si el número dado es válido para una región en particular |
booleano | isValidNumber(Phonenumber.PhoneNumber number) | Valida si un número de teléfono coincide con un patrón específico |
booleano | canBeInternationallyDialled(Phonenumber.PhoneNumber número) | Devuelve verdadero en caso de que el número se pueda marcar desde fuera de la región especificada |
En t | getCountryCodeForRegion(java.lang.String regionCode) | Devuelve el código de llamada del país para una región específica |
PhoneNumberUtil.PhoneNumberType | getNumberType(Phonenumber.PhoneNumber number) | Este método devuelve el tipo de número basado en el número mismo. Por ejemplo, Toll-Free, Mobile, FixedLine, etc. |
Esta es una rica biblioteca con aún más funciones de utilidad y se encarga de gran parte de las necesidades de nuestro programa.
A continuación se muestra la implementación de Java para validar números de teléfono utilizando la biblioteca libphonenumber de Google. Aquí usaremos Eclipse IDE.
Paso 1: crear un proyecto Maven
Para empezar, primero cree un Proyecto Maven en Eclipse. La razón detrás de la creación de un Proyecto Maven en lugar de un Proyecto Java normal es que la biblioteca libphonenumber está presente en el Repositorio Maven, por lo que debemos usarla como una dependencia en nuestro proyecto.
Deje todo como predeterminado. El Id. de artefacto será el nombre de su proyecto Maven.
Paso 2: agregar la dependencia
Una vez que haya creado el Proyecto Maven, agregue la dependencia libphonenumber en el archivo pom.xml. Tan pronto como guarde el archivo, la biblioteca se descargará para su uso sin conexión.
XML
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.Demo</groupId> <artifactId>DemoProject</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.googlecode.libphonenumber</groupId> <artifactId>libphonenumber</artifactId> <version>8.12.16</version> </dependency> </dependencies> </project>
Paso 3: Creación de la clase de controlador
Ahora, simplemente cree una clase Java para usar las funcionalidades de esta biblioteca.
Java
import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; public class GFG { public static void main(String args[]) { // creating an array of random phone numbers String[] phonenumbers = { "+91 94483 76473", "1800 425 3800", "+91 83944 7484", "0294 2424447" }; // iterating over each number to validate for (String phone : phonenumbers) { if (isPhoneNumberValid(phone)) { System.out.println(phone + " is valid."); } else { System.out.println(phone + " is not valid."); } } } // this method return true if the passed phone number is // valid as per the region specified public static boolean isPhoneNumberValid(String phone) { // creating an instance of PhoneNumber Utility class PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); // creating a variable of type PhoneNumber PhoneNumber phoneNumber = null; try { // the parse method parses the string and // returns a PhoneNumber in the format of // specified region phoneNumber = phoneUtil.parse(phone, "IN"); // this statement prints the type of the phone // number System.out.println( "\nType: " + phoneUtil.getNumberType(phoneNumber)); } catch (NumberParseException e) { // if the phoneUtil is unable to parse any phone // number an exception occurs and gets caught in // this block System.out.println( "Unable to parse the given phone number: " + phone); e.printStackTrace(); } // return the boolean value of the validation // performed return phoneUtil.isValidNumber(phoneNumber); } }
Producción:
Type: MOBILE +91 94483 76473 is valid. Type: TOLL_FREE 1800 425 3800 is valid. Type: UNKNOWN +91 83944 7484 is not valid. Type: FIXED_LINE 0294 2424447 is valid.