Expresiones regulares para números de teléfono y cómo validarlos

PHP   |   5 Comentarios

Hoy vamos a tratar un tema que en principio podría pasar desapercibido por ser algo que tenemos ya interiorizado, pero en realidad es algo muy útil hoy en día. Como puedes haber comprobado por el título, vamos a hablar sobre la expresión regular para números de teléfono y cómo podemos validarlos con PHP.

Como comentaba antes, actualmente esto es importante porque casi cualquier formulario que hay en una web nos va a pedir nuestro número de teléfono, ya sea porque hemos realizado una reserva, hemos dejado una duda en una de las páginas web que solemos visitar o bien a la hora de hacer un pedido online, entre otras muchas más opciones.

Como puedes ver son numerosos los casos en los que nos piden este dato y si somos propietarios de una página web, seguro que también pides este dato para recabar información acerca de los posibles clientes potenciales que visiten tu web. Por ello vamos a aprender a validar este dato en nuestros formularios para asegurarnos de que nos dejan información verídica y no un número falso.

Lo primero que necesitamos es un formulario. Una vez que lo tengamos y hayamos recogido todos los campos que hemos solicitado al usuario toca pasar a la comprobación de estos. En el caso del teléfono, podemos hacer uso de las expresiones regulares, pero antes de pasar a esto, vamos a explicar qué son.

¿Qué son las expresiones regulares?

Una expresión regular o regex, es un patrón que se compara con una cadena (esta cadena puede ser un DNI, un email o en este caso, un número de teléfono) de izquierda a derecha y de carácter en carácter para comprobar que cumple con exactitud lo que hemos indicado.

Esta expresión va encerrada entre dos caracteres que van a cumplir la función de delimitadores. Estos delimitadores no pueden ser letras o números, normalmente se usa la barra oblicua “/” y para escapar un carácter, se usa la barra invertida “\”. Si el delimitador apareciese mucho dentro de la expresión regular que vamos a usar, podemos usar otro diferente, teniendo en cuenta siempre que no pueden ser números ni letras.

¿Cómo validar un teléfono móvil?

Vamos a ver la expresión regular para números que vamos a usar para validar un teléfono móvil. En este caso vamos a validar un móvil de España, pero cuando pase a explicar la expresión regular os diremos que tienes que cambiar si quieres validar un móvil que no sea español.

La expresión regular es esta:

(\+34|0034|34)?[ -]*(6|7)[ -]*([0-9][ -]*){8}

  • La primera parte (\+34|0034|34)? nos indica que el número que vamos a validar puede empezar por +34, 0034 o 34. Este es el código de país, el 34 pertenece a España, si quieres validar un móvil que no sea de España, lo único que tienes que hacer es cambiar ese código por el del país que quieras.
  • La segunda parte [ -]* nos dice que detrás del código del país pueden ir espacios en blanco, guiones o puede que no haya ningún tipo de separación entre los números, es decir, que el teléfono esté escrito seguido.
  • La tercera parte (6|7)[ -]* nos está indicando que el primer número por el que empiece el número de teléfono (sin contar el código de país), tiene que ser 6 o 7 y que después de este primer número, al igual que en la segunda parte, puede ir un espacio en blanco, un guión o nada.
  • Por último ([0-9][ -]*){8} nos está diciendo que tienen que ir 8 caracteres y que estos tienen que estar entre 0 y 9, ambos incluidos. Como en los casos anteriores, detrás de cada uno de estos caracteres puede ir un espacio en blanco, un guión o nada.

Por último, para comprobar si el valor que queremos validar concuerda con la expresión regular que tenemos, usamos la función de PHP preg_match, a la cual le pasamos como primer parámetro la expresión regular y como segundo, la cadena a validar. Esta función nos devolverá true si se cumple el patrón y false en caso contrario.

preg_match($patron, $cadena);

¿Cómo validar un teléfono fijo?

Ahora que sabemos cómo validar un móvil, vamos a ver la expresión regular para números que usaremos para validar un teléfono fijo. 

La expresión regular es esta:

(\+34|0034|34)?[ -]*(8|9)[ -]*([0-9][ -]*){8}

Como puedes ver, la expresión es prácticamente igual, salvo que en esta ocasión cambiamos el primer número, que en este caso, al ser un fijo empieza por 8 o 9. Y por lo demás es exactamente igual que para la validación de un teléfono móvil.

Conclusión

Como habéis podido comprobar, este tema es muy importante y no le damos la suficiente importancia. El uso de las expresiones regulares puede ser complicado de entender si nunca has tenido contacto con ellas, pero si te paras a analizarlas trozo a trozo, en vez de en su conjunto, verás como poco a poco vas a poder entender cualquier expresión regular que te encuentres.

Puedes contarnos si has usado alguna vez expresiones regulares, aparte de esta, y contarnos tu experiencia con ellas o cualquier problema que hayas tenido con ellas.

¿Te ha gustado el artículo?
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (35 votos, promedio: 2,57 sobre 5)
Loading...

Suscríbete. Déjanos tu email y recibe contenido genial cada mes


Artículo escrito por

¡Exprésate! Dejanos tu comentario

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

5 Comentarios

cerrajeros Madrid

parece de lo más complicado! Menos mal que hay profesionales que lo dominan y a los que poder contratar

Juan

Esta expresión regular valida números de teléfono argentinos https://github.com/agustinbouillet/validador-de-numeros-de-telefono-argentinos

codigonexo

@mantrainternet @carcam actualizada la expresión regular, thanks!!! http://t.co/fOyAEAr9

mantrainternet

RT @codigonexo: Codigonexo Blog: Expresión regular para numeros de telefono, http://t.co/CMmUnRVE

codigonexo

Codigonexo Blog: Expresión regular para numeros de telefono, http://t.co/l1yzNBXr