¿Qué es Regex?
Regex (expresión regular) es un lenguaje de patrones para buscar, validar y extraer texto. En una sola línea de regex podés validar si un email es válido, extraer todos los números de un string, o reemplazar patrones complejos en texto. Es una habilidad que parece difícil desde afuera pero que tiene una lógica clara una vez que la rompés en partes.
Las expresiones regulares existen en prácticamente todos los lenguajes de programación: JavaScript, Python, Go, Ruby, PHP. La sintaxis tiene pequeñas variaciones entre lenguajes, pero los conceptos core son universales. Aprenderla una vez es aprenderla para siempre.
Sintaxis básica.
Los caracteres literales coinciden con ellos mismos: hola encuentra "hola" en el texto. El punto . coincide con cualquier carácter excepto salto de línea. El acento circunflejo ^ ancla al inicio del string. El signo de dólar $ ancla al final. Las clases de caracteres entre corchetes [abc] coinciden con cualquiera de los caracteres listados.
Las clases predefinidas aceleran mucho la escritura: \d coincide con dígitos (equivalente a [0-9]), \w con caracteres de palabra (letras, números, guión bajo), \s con espacios en blanco. Sus versiones en mayúscula niegan la clase: \D coincide con lo que NO es dígito.
.— cualquier carácter\d— dígito [0-9]\w— carácter de palabra [a-zA-Z0-9_]\s— espacio en blanco[abc]— a, b, o c[^abc]— cualquier cosa excepto a, b, c
Cuantificadores y repetición.
Los cuantificadores dicen cuántas veces puede repetirse un elemento: * significa cero o más veces, + una o más veces, ? cero o una vez. Para un número exacto usás llaves: {3} exactamente 3, {2,5} entre 2 y 5. Por defecto los cuantificadores son greedy (toman lo máximo posible); agregar ? los hace lazy (toman lo mínimo).
Grupos de captura.
Los paréntesis crean grupos de captura que te permiten extraer partes del match. Si tenés la regex (\d{4})-(\d{2})-(\d{2}) contra "2026-05-16", el grupo 1 captura "2026", el grupo 2 "05", el grupo 3 "16". Los grupos con nombre (?<año>\d{4}) hacen el código más legible. Los grupos no capturadores (?:patrón) agrupan sin capturar.
Flags esenciales.
Las flags modifican el comportamiento de la regex. g (global) encuentra todas las coincidencias, no solo la primera. i (case-insensitive) ignora mayúsculas. m (multiline) hace que ^ y $ coincidan al inicio y fin de cada línea. s (dotall) hace que el punto también coincida con saltos de línea.
Patrones reales.
Email básico: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}. URL: https?://[^\s]+. Solo números: ^\d+$. Fecha YYYY-MM-DD: ^\d{4}-\d{2}-\d{2}$. Contraseña mínima (8 chars, 1 número, 1 mayúscula): ^(?=.*\d)(?=.*[A-Z]).{8,}$. Estos patrones son puntos de partida, no la regex perfecta para cada caso.
Practicá ahora.
La mejor forma de aprender regex es practicando con texto real. El Regex Tester de GaloDev resalta las coincidencias en tiempo real, muestra los grupos de captura, incluye todos los flags, y tiene plantillas de patrones comunes listos para usar.