Como usar Expresiones Regulares en PHP

10/Jul/2018 regex

Las expresiones regulares son una herramienta muy poderosa para trabajar con textos y también está reservada para solo una pequeña parte de programadores, esto debido a que muy pocos se toman el tiempo para estudiarlas y aprenderlas, si eres de los que aun no las dominan, puedes leer estos artículos para introducirte al tema: ¿Qué son las expresiones regulares?Cómo trabajar con expresiones regulares.

Encontrar el dominio en una URL

Ahora que ya sabes que son las expresiones regulares, voy a enseñarte cómo utilizarlas en PHP, primero crea un archivo como este regex.php

Ahora veamos este código por partes, primero tenemos una variable con una expresión regular que está entre comillas simples, lo primero que tenemos que notar es que (además de las comillas) la expresión está encerrada entre signos @, esto es un requisito, pero no necesariamente deben de ser @, puede ser casi cualquier carácter que desees por ejemplo #, /, $, etc, el truco en elegir el carácter es que no lo uses en tu expresión regular, de otro modo PHP va a darte un error. Luego tenemos un texto, aquí hay una URL y nuestro objetivo es conocer cuál es el dominio, que en este caso será www.codigonaranja.com. Después está la función preg_match que es la que usamos para hacer búsquedas mediante expresiones regulares en PHP, aquí la usamos con 3 parámetros, el primero es la regex, el segundo es el texto al cual vamos a aplicar la expresión regular y el tercero es una variable en la cual la función va a regresarnos el resultado de la función.

Ahora solo tienes que crear el archivo y hacer algunas pruebas, no omitas este paso, por que te ayudará a comprender mejor todo. Si te funciono todo bien, entonces has dos pruebas más:

  1. Cambia el delimitador @ por otro que se te ocurra y mira si todo sigue funcionando.
  2. Prueba con diferentes URL en la variable $texto, incluye dominios con http y https o incluso sin esa parte, por ejemplo www.codigonaranja.com/algomas.php

Veamos ahora más detalles sobre este ejemplo, algo que no había mencionado es el uso de paréntesis, estos se usan para crear grupos, como vemos en la siguiente imagen la RegEx va a buscar dos grupos, uno que equivale a http:// y que opcionalmente puede llevar una “s” y otro grupo con todo lo demás que no sea un carácter /

Grupos en expresiones regulares

Al ejecutar la función preg_match nos retorno las coincidencias encontradas en la variable $matches en forma de arrray y en el índice 0 va retornar el texto que coincidió con el patrón completo, en el índice 1 va a regresar el texto que coincide con el primer grupo, en el índice 2 va a regresar el texto que coincide con el grupo 2 y asi en adelante. Entonces por eso que la variable $matches[2] contiene el dominio.

Validar si una clave es segura.

Ahora veamos otro ejemplo, suponiendo que debemos validar si una contraseña es segura, nos dicen que como mínimo debe contener un carácter especial ([email protected]#$&), un número, una letra mayúscula, una minúscula y al menos 8 caracteres. Para esto podemos usar este código:

Ahora voy a explicarte como funciona esta expresión regular, otra vez, aquí hay algo nuevo y es la combinación de caracteres  ?= estos se usan en grupos, como los que creamos usando paréntesis, y se usan para condicionar si la una cadena de texto es válida, por ejemplo la expresión  Luis(?=Cruz) dice que el nombre Luis es válido solo si se encuentra antes del texto Cruz, otro efecto que hace es que la palabra Cruz no es parte de las coincidencias, es decir no va retornar este grupo en la variable $matches.

La función para validar la clave, regresa la cantidad de coincidencias la cual, en este caso siempre va a ser 0 o 1, lo cual se interpreta como False o True respectivamente.

¡Ahora a practicar!

Ya viste estos ejemplos ahora intenta lograr estos mismos resultados: Encontrar el dominio de una URL y validar si la clave es segura, pero sin utilizar Expresiones Regulares de esta forma podrás comparar el beneficio de saber trabajar con Expresiones Regulares.



Ir a la barra de herramientas