Developer Tools

Expresiones Regulares para Principiantes: Patrones que Realmente Tienen Sentido

Una introducción amigable a la sintaxis de regex, patrones comunes para validación y búsqueda, y cómo probar expresiones sin frustraciones.

7 min de lectura

Código en la pantalla de un portátil

Las expresiones regulares (regex) tienen fama de ser ilegibles. Pero una vez que aprendes sus componentes básicos, se convierten en una de las herramientas más poderosas en el arsenal de cualquier desarrollador — desde validar entradas de usuarios hasta buscar en archivos de registro.

¿Qué es una expresión regular?

Una regex es un patrón que describe un conjunto de cadenas de texto. Le das al motor de regex un patrón y una cadena objetivo; él te indica si el patrón coincide (y dónde).

const pattern = /hello/i;
pattern.test("Hello World"); // true

La bandera /i hace que la coincidencia no distinga entre mayúsculas y minúsculas. Las banderas se colocan después del / de cierre en JavaScript.

Componentes esenciales

Símbolo Significado Ejemplo Coincide con
. Cualquier carácter (excepto salto de línea) h.t hat, hit, hot
* Cero o más del elemento anterior ab*c ac, abc, abbc
+ Uno o más del elemento anterior ab+c abc, abbc (no ac)
? Cero o uno del elemento anterior colou?r color, colour
\d Cualquier dígito (0–9) \d{3} 123, 007
\w Carácter de palabra (letra, dígito, _) \w+ hello, user_1
\s Espacio en blanco (espacio, tabulación, salto de línea) \s+ coincide con espacios
^ Inicio de cadena ^Hello Hello…
$ Fin de cadena world$ …world

Clases de caracteres

Los corchetes definen un conjunto de caracteres a buscar:

[aeiou]     — cualquier vocal
[A-Z]       — cualquier letra mayúscula
[0-9a-f]    — cualquier dígito hexadecimal
[^0-9]      — cualquier cosa que NO sea un dígito

Grupos y alternancia

Los paréntesis agrupan partes de un patrón, y | significa "o":

(cat|dog)s?   — coincide con cat, cats, dog, dogs
(\d{3})-(\d{4}) — coincide con 555-1234 y captura cada parte

Los grupos capturados son útiles para extracción — obtener números de teléfono, fechas o IDs de texto desordenado.

Patrones comunes del mundo real

Correo electrónico (simplificado)

^[^\s@]+@[^\s@]+\.[^\s@]+$

Verifica la estructura "algo @ algo . algo" — suficiente para la validación en el lado del cliente. Para producción, verifica con una comprobación real de entrega de correo usando nuestro Validador de Email.

URL

https?:\/\/[^\s/$.?#].[^\s]*

Coincide con URLs tanto http como https. Para construir URLs válidas, consulta el Constructor de URL y Query String.

Número de teléfono (EE. UU.)

\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}

Coincide con formatos como (555) 123-4567, 555.123.4567 y 555-123-4567.

Fecha (YYYY-MM-DD)

\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])

Depuración de regex

La mejor manera de aprender es probando de forma interactiva. Pega tu patrón y una cadena de muestra en nuestro Probador de Regex — resalta las coincidencias en tiempo real, muestra los grupos capturados y explica qué hace cada parte de tu patrón.

Escribe el patrón más simple que resuelva tu problema. Las regex "ingeniosas" son difíciles de mantener.

Problemas de rendimiento

Retroceso catastrófico

Los cuantificadores anidados como (a+)+b pueden hacer que el motor intente un número exponencial de rutas con entradas que no coinciden. Evita patrones en los que los mismos caracteres puedan ser capturados por múltiples partes de la expresión.

El anclaje ahorra tiempo

Si sabes que tu patrón debe coincidir con la cadena completa, usa ^ y $. Sin anclas, el motor analiza cada posición de la cadena buscando una coincidencia parcial.

Hoja de referencia rápida

.           cualquier carácter
\d \D       dígito / no dígito
\w \W       carácter de palabra / no de palabra
\s \S       espacio en blanco / sin espacio en blanco
[abc]       conjunto de caracteres
[^abc]      conjunto negado
(group)     grupo de captura
(?:group)   grupo sin captura
a{3}        exactamente 3
a{2,5}      entre 2 y 5
a*? a+?     versiones perezosas (no codiciosas)
(?=ahead)   lookahead positivo
(?!ahead)   lookahead negativo

La regex es una habilidad que se acumula. Empieza con patrones simples, pruébalos visualmente y añade complejidad solo cuando sea necesario. Todos los lenguajes admiten regex — una vez que aprendes la sintaxis, es portable a cualquier entorno.