Java Regex para validar el número de teléfono

En este artículo, aprenderemos cómo validar un número de teléfono móvil en el formato de diferentes países usando Java Regex (Expresiones regulares)

formato de número de teléfono

Un número de teléfono celular típico tiene el siguiente componente:

+<country_code> <area_code> <subscriber_number>

Donde dependiendo del país,

  • Código postal está en algún lugar entre 1 y 3 dígitos
  • indicativo Regional y número de socio el teléfono tiene entre 8 y 11 dígitos

Si solo necesitas un expresiones regulares para que coincida con todos los formatos de país Así que esto es todo,

"^(\+\d{1,3}( )?)?((\(\d{1,3}\))|\d{1,3})[- .]?\d{3,4}[- .]?\d{4}$"

Si tu quieres saber ¿Cómo se nos ocurrió esta expresión regular? así que por favor lea este artículo completo.

1. Regex para hacer coincidir el número de teléfono de 10 dígitos sin espacios

Esta es la expresión regular más fácil de hacer coincidir con solo 10 dígitos. También veremos aquí cómo usar expresiones regulares para validar el patrón:

String regex = "^\d{10}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("9876543210");
matcher.matches(); // returns true if pattern matches, else returns false

Rompamos la expresión regular y entendamos,

  • ^ principio de expresión
  • d{10} es una coincidencia requerida de 10 dígitos sin espacios
  • $ fin de expresión

Puede hacer que la expresión regular sea más flexible para hacer coincidir entre 8 y 11 dígitos del número de teléfono sin espaciosusando esta expresión regular:

String noSpaceRegex = "^\d{8,11}$";

2. Regex para hacer coincidir el número de teléfono de 10 dígitos con espacios en blanco, guiones o sin espacios

String spacesAndHyphenRegex = "^(\d{3}[- ]?){2}\d{4}$";

Rompamos la expresión regular y entendamos,

  • ^ principio de expresión
  • d{3} es una coincidencia requerida de 3 dígitos
  • [- ]? es una coincidencia de espacio o guión opcional después de 3 dígitos
  • {2} es repetir el partido de arriba d{3}[- ]? dos veces se convierte en un total de 6 dígitos
  • d{4} es una coincidencia obligatoria de los últimos 4 dígitos
  • $ fin de expresión

Este patrón coincidirá con números de teléfonos móviles como 9876543210, 987 654 3210, 987-654-3210, 987 654-3210, 987 6543210etc.

3. Regex para hacer coincidir el número de teléfono de 10 dígitos con paréntesis

String parenthesesRegex = "^((\(\d{3}\))|\d{3})[- ]?\d{3}[- ]?\d{4}$";

Rompamos la expresión regular y entendamos,

  • ^ principio de expresión
  • (\(\d{3}\))|\d{3}) es una coincidencia requerida de 3 dígitos con o sin paréntesis
  • [- ]? es una coincidencia de espacio o guión opcional después de 3 dígitos
  • \d{3}[- ]? es una coincidencia requerida de los siguientes 3 dígitos seguidos de un espacio, guión o sin espacio
  • \d{4} es una coincidencia obligatoria de los últimos 4 dígitos
  • $ fin de expresión

Este patrón hará coincidir los números de teléfonos móviles con espacios y guiones, así como números como (987)6543210, (987)654-3210, (987)-654-3210 etc.

4. Regex para hacer coincidir el número de teléfono de 10 dígitos con el prefijo del código de país

Esta expresión regular se combina con una expresión regular para incluir paréntesis

String countryCodeRegex = "^(\+\d{1,3}( )?)?((\(\d{3}\))|\d{3})[- .]?\d{3}[- .]?\d{4}$";

Rompamos la expresión regular y entendamos,

  • ^ principio de expresión
  • (\+\d{1,3}( )?)? es una coincidencia de código de país opcional entre 1 y 3 dígitos precedida por el símbolo +, seguida de un espacio o sin espacio.
  • ((\(\d{3}\))|\d{3})[- .]?\d{3}[- .]?\d{4} debe coincidir con 10 dígitos con o sin corchetes, seguidos de un espacio, un guión o sin espacio
  • $ fin de expresión

Este patrón coincidirá con los números de teléfonos móviles de los ejemplos anteriores, así como con números como +91 (987)6543210, +111 (987) 654-3210, +66 (987)-654-3210, etc.

5. Regex para que coincida con el número de teléfono de todos los formatos de países

Antes de comenzar a definir una expresión regular, veamos algunos de los formatos de números de teléfono de países:

Abkhazia    +995 442 123456
Afghanistan +93 30 539-0605
Australia   +61 2 1255-3456
China       +86 (20) 1255-3456
Germany     +49 351 125-3456
Indonesia   +62 21 6539-0605
Iran        +98 (515) 539-0605
Italy       +39 06 5398-0605
New Zealand +64 3 539-0605
Philippines +63 35 539-0605
Singapore   +65 6396 0605
Thailand    +66 2 123 4567
UK          +44 141 222-3344
USA         +1 (212) 555-3456
Vietnam     +84 35 539-0605

Extraigamos algo de información de estos números:-

  1. Prefijo de código de país comienza con '+' y tiene de 1 a 3 dígitos
  2. Última parte del número, también llamada número de socio tiene 4 dígitos en todos los números
  3. La mayoría de los países tienen un número de teléfono de 10 dígitos después de excluir el código de país. Una observación general es que el número de teléfono de todos los países tiene entre 8 y 11 dígitos después de excluir el código de país.

Revisemos la expresión regular del ejemplo anterior para validar el código de país:

String countryCodeRegex = "^(\+\d{1,3}( )?)?((\(\d{3}\))|\d{3})[- .]?\d{3}[- .]?\d{4}$"l

La expresión regular anterior debe coincidir con números de teléfono de 10 dígitos. Hagamos algunos cambios a esto y hagámoslo más flexible para hacer coincidir números de teléfono de 8-11 dígitos:-

Regex para que coincida con todos los formatos de países
String allCountryRegex = "^(\+\d{1,3}( )?)?((\(\d{1,3}\))|\d{1,3})[- .]?\d{3,4}[- .]?\d{4}$";

Rompamos la expresión regular y entendamos,

  • ^ principio de expresión
  • (\+\d{1,3}( )?)? es una coincidencia de código de país opcional entre 1 y 3 dígitos precedida por el símbolo "+", seguido de un espacio o sin espacio.
  • ((\(\d{1,3}\))|\d{1,3} es un grupo obligatorio de 1 a 3 dígitos con o sin paréntesis seguido de un guión, un espacio o sin espacio.
  • \d{3,4}[- .]? es un grupo obligatorio de 3 o 4 dígitos seguido de un guión, un espacio o ningún espacio
  • \d{4} es un grupo obligatorio de los últimos 4 dígitos
  • $ fin de expresión

6. Regex para que coincida con el número de teléfono de formato de país específico

Como vio en el ejemplo anterior, necesitamos agregar algo de flexibilidad en nuestra expresión regular para que coincida con todos los formatos de países. Si desea una validación más estricta del formato de un país específico, aquí hay ejemplos de India y Singapur Patrón de expresión regular de número de teléfono:

String indiaRegex = "^(\+\d{2}( )?)?((\(\d{3}\))|\d{3})[- .]?\d{3}[- .]?\d{4}$";
String singaporeRegex = "^(\+\d{2}( )?)?\d{4}[- .]?\d{4}$";

Si quieres conocer otros artículos parecidos a Java Regex para validar el número de teléfono puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas