En el artículo anterior explique que son las expresiones regulares y una introducción, si eres nuevo usando RegEx, entonces vale la pena leerlo. Ahora voy a mostrarte una guía para entender y utilizar las expresiones regulares.
Caracteres, grupos de caracteres y rangos.
Las expresiones regulares pueden contener palabras, grupos o rangos, por ejemplo una regex pueden usarse para buscar una palabra específica por ejemplo codigonaranja
, pero también podemos definir que contenga un rango de caracteres o grupo usando los signos [
y ]
, por ejemplo la expresión regular [aeiou]
puede usarse para saber si el texto contiene una vocal.
Como vemos la expresión regular encontró las dos vocales en la palabra Luis, y detecto que la palabra contiene vocales. También hay que notar que cada letra [aeiou] se considera de forma independiente y no como una palabra.
Si lo que necesitamos es buscar un rango debemos separar el rango por un -
por ejemplo para buscar palabras que contengan una letra mayúscula, podemos usar esta expresión regular [A-Z]
También podemos “negar” el rango buscando el resultado opuesto con el caracter ^ al inicio del rango, por ejemplo la expresión [^0-9]
intenta buscar caracteres que no sean números. Al aplicar la expresión a un texto con números, entonces no encuentra ninguna coincidencia.
Cuantificadores de expresiones regulares
Estos se colocan después de un rango, texto o meta-caracter para modificar o definir la cantidad de veces que debe repetirse o encontrarse. Aquí está la lista de ellos:
?
Coincide 0 ó 1 vez.*
Coincide 0 ó más veces+
Coincide 1 ó más veces{n}
Coincide exactamente n veces, donde n es un número entero.{n,}
Coincide al menos n veces, donde n es un número entero.{,m}
Coincide un máximo de m veces, donde m es un número entero.{n,m}
Coincide exactamente de n a m veces, donde n y m son números entero.
Meta-caracteres
En las expresiones regulares existen caracteres especiales con un significado y tratamiento especial, a estos se les llama meta-caracteres o caracteres especiales, aquí hay una lista de ellos.
.
Representa cualquier caracter excepto el salto de línea\w
Representa cualquier letra o número\W
Representa cualquier caracter que no sea una letra o un numero.\d
Representa cualquier numero del 0 al 9\D
Representa cualquier caracter que no sea un numero del 0 al 9\s
Representa un espacio en blanco\S
Representa cualquier caracter que no sea un espacio en blanco.$
Representa que ahí finaliza el texto, por ejemplo la expresióncom$
busca que com sea lo último en el texto. Este caracter solo puede usarse al final de la expresión regular.^
Representa el inicio del texto, por ejemplo la expresión^hola
busca que el texto inicie con hola, este caracter solo puede usarse al inicio de la expresión regular.\b
Representa que ahí inicia o finaliza una palabra, por ejemplo la expresión\b[A-Z][a-z]*
busca palabras que inicien con una letra mayúscula y luego lleven cualquier cantidad de letras minúsculas. En cambio la expresión\w*os\b
busca palabras que finalicen en os.
Ejemplos prácticos.
Ahora que ya conoces mucho de expresiones regulares, vamos a practicar con algunos ejemplos. Primero vamos a detectar si un archivo es de tipo pdf, en base a su nombre y extensión, para ello podemos usar una expresión como esta: .*\.pdf$
Lo que hace la expresión es buscar cualquier caracter, sea numero, letra o símbolo usando el .
luego se coloca un *
para decir que puede ir cualquier cantidad de caracteres, después sabemos que la extensión de los archivos inicia con un .
pero como él .
es un caracter especial usamos un signo \
para que lo ignore y trate como un simple .
luego debemos buscar el texto pdf
y este debe ser lo último en el texto, no debe haber nada después, esto lo definimos usando el signo $
Ahora si necesitamos validar un número telefónico y nos dicen que solo puede iniciar con un 2 o un 7 y debe de tener exactamente 8 números, podemos usar esta expresión regular: ^[27]\d{7}$
Primero usamos el signo ^
para decir que estamos por definir el inicio de la cadena, luego le decimos que debe llevar un 2 o un 7 con [27]
ahora faltan 7 números más para completar los 8 números, entonces usamos \d
para decir que continua un número del 0 al 9 y usamos {7}
para definir que este último patrón se repite 7 veces, luego usamos $
para definir que aquí debe terminar el texto (después de los últimos 7 números.)
Intente mantener esta guía lo más corta y simple posible, aunque este tema podría llenar un libro completo. Lo importante es iniciar con algo sencillo, trata de crear tus propias expresiones regulares o prueba modificando las que están en este articulo, por ejemplo intenta modificar la validación de números telefónicos para que sigan la reglas de los números en tu país.