Composición de números de teléfono y Expresión Regular con Python

En este tutorial descomponemos y vemos las diferentes formas de escribir un número de teléfono. Además usaremos una sencilla expresión regular con la que poder validar los números usando Python.

Composición de un número de teléfono

Antes de empezar a programar, primero debemos conocer cómo se escribe un número telefónico. Según la RAE hay que seguir unas pautas a la hora de escribirlos.

  • Los números de teléfono suelen separarse en bloques, usando espacios, puntos o guiones.
  • Según la especificación E.164, un número de teléfono debe constar como máximo de 15 dígitos contando su prefijo.
  • En primer lugar tenemos el Código Internacional (00) y podrá sustituirse por el signo +.
  • A continuación tenemos el Código de País, que suele esta compuesto de 3 dígitos y podrá estar delimitado por paréntesis.
  • El siguiente bloque corresponde al prefijo o Código de Región. Este puede ser de longitud fija de 3 cifras (España), de longitud variable de entre 2 y 5 cifras (Alemania, Austria), entre 1 y 3 dígitos (Japón), 1 y 2 dígitos (Chile), 2 y 4 dígitos (Argentina), 2 y 3 dígitos (México), etc …
  • Por último tenemos el número de teléfono, que puede estar compuesto de hasta un máximo de 7 dígitos.

Sabiendo estas pautas de escritura de números de teléfono, nos podemos poner a escribir nuestro pequeño script para validar números, usando el lenguaje Python.

Módulo RE de Python

Vamos a usar el módulo RE proporcionado por Python, que nos permite trabajar con expresiones regulares. La pregunta que nos podemos hacer, es si debemos usar el método search() o el método match(). Aunque ambos métodos son perfectos para buscar patrones en cadenas, hay una pequeña diferencia entre ambos.

Tanto re.search(), como re.match() retornan un objeto en caso de encontrar coincidencias y devuelven None en caso contrario. La diferencia es que re.match() sólo buscará coincidencias al comienzo de la cadena, por lo que en caso de encontrar alguna coincidencia en otra parte retorna None. Sabiendo esto, ya podemos ponernos a escribir el patrón.

La expresión regular que he creado es bastante sencilla, por lo que no vamos a complicarnos la vida. Si la descomponemos podemos ver cómo funciona:

  • La expresión regular la hemos creado usando la técnica de captura de grupos (que delimita cada grupo usando paréntesis).
  • Cada grupo corresponde a un bloque del número de teléfono (código de país, prefijo y número de teléfono).
  • Estos grupos tienen su propio patrón y podemos acceder a ellos usando el método groups()

Para saber más sobre cómo escribir expresiones regulares (regex), podéis acceder a la guía oficial.

Una vez que hemos probado y sabemos que funciona nuestra expresión en el intérprete de Python, podemos crear un pequeño script, que lo que hará es comprobar una lista de números.

Realicemos unos Test Unitarios de forma manual desde nuestro intérprete de Python, para comprobar si funciona correctamente.

Referencias de Interés

Si necesitas más documentación de interés, sobre la composición de números de teléfono, puedes seguir los siguiente enlaces:

 

 

 

 

 

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.