Expresiones regulares (regex): referencia rápida



Las expresiones regulares son una MUY poderosa herramienta a la hora de programar, y que se utilizan en prácticamente todos los lenguajes de programación.

Sirven, por ejemplo, para revisar si el formato de un número de teléfono coincide con lo que esperamos, o para determinar si una fecha está bien formateada, un correo, una URL o lo que sea necesario.

A continuación verán una lista de los elementos más comunes a utilizar:

[abc] Cualquiera de estos caracteres: a, b o c
[^abc] Cualquier caracter excepto a, b, o c
[a-z] Cualquier caracter dentro del rango a-z
[a-zA-Z] Cualquier caracter dentro del rango a-z o A-Z
^ Inicio de la línea
$ Fin de la línea
\A Inicio de una palabra
\z Fin de una palabra
. Cualquier caracter - uno solo - (excepto un salto de línea)
\s Un caracter de espacio
\S Cualquier que caracter que no sea de espacio
\d Cualquier dígito
\D Cualquier caracter que no sea dígito
\w Cualquier caracter alfanumérico (letra, número o guión bajo)
\W Cualquier caracter que no sea alfanumérico
\b Cualquier borde de palabra
(...) Captura todo lo que esté encerrado entre los paréntesis como un sólo elemento
(a|b) a o b
a? Cero o uno veces a
a* Cero o más veces a
a+ Uno o más veces a
a{3} Exactamente 3 veces a
a{3,} 3 o más veces a
a{3,6} Entre 3 y 6 veces a

Y también se pueden incluir algunas opciones como:

i no considerar mayúsculas ni minúsculas
m trabajar de manera “multiline” (^ y $ corresponderán al inicio/fin de una línea)

Consideraciones:

Los caracteres especiales se deben escapar con un \ (backslash), como por ejemplo el punto, asterisco, backslash, y otros caracteres que tienen significados especiales como \t (tab), \n (nueva línea), \r (retorno) o \u00A9 (caracteres unicode)

Ejemplos de uso:

Estos ejemplos están demostrados en PHP, pero las expresiones regulares se utilizan de igual manera en otros lenguajes.

$var="Hola que tal?";
$resultado=preg_match("/(hola|chao)(.*)\?/i",$var);

Esto devuelve true, porque existe (hola|chao), es decir “hola” o “chao”, seguido de (.*) cualquier caracter cero o más veces, seguido de \? un signo de pregunta (escapado).
Nótese que la letra i está diciéndole que sea “case insensitive”. Si se la quitamos, devolvería false, porque Hola no es lo mismo que hola.

//se solicita un teléfono en formato (+xx x) xxxx xxxx
$var="(+56 2) 1234 5678";
$resultado=preg_match("/^\(\+[0-9]{2} [0-9]{1,2}\) [0-9]{4} [0-9]{4}$/",$var);

Esto devolvería true, porque la expresión regular está buscando un paréntesis (escapado), seguido de un + (escapado), seguido de 2 números, un espacio, uno o dos números, cierre de paréntesis (escapado), un espacio, 4 números, un espacio, y otros 4 números. Ni un caracter de más ni uno de menos.
Nótese que comienza con ^ y termina con $, eso quiere decir que la cadena de texto completa debe coincidir… si se agrega un caracter más al final o al principio, dejaría de devolver true.

Conclusiones:

Las expresiones regulares son muy potentes, y a la vez muy complejas, pero vale la pena intentar entenderlas. Yo hasta hace poco, a pesar de programar durante mucho tiempo, no las entendía, hasta que me decidí en darles una oportunidad y fue con una lista como la que les dejo acá que me motivé a comenzar.

Suerte!

PD: si quieren probar un rato, les recomiendo ingresar a http://www.regexr.com/. Escribir arriba una expresión regular y verán como va encontrando coincidencias abajo (el texto de abajo también es editable)

Originally posted 2015-11-23 16:45:56.

Expresiones regulares (regex): referencia rápida
Etiquetado en:        

Deja un comentario

¿Quieres recibir el contenido V.I.P de Preceptos Digitales?

¿Quieres recibir el contenido V.I.P de Preceptos Digitales?

Ingresa tu correo y te enviaremos contenidos especiales para quienes escuchan el Podcast!



Te has suscrito exitosamente! Nos hablamos!