Guía Completa de RegEx (Expresiones Regulares) de cero a Pro
Las expresiones regulares (RegEx) son una de las herramientas más poderosas —y subestimadas— en programación.
Jose Gratereaux
Author
Muchos desarrolladores las evitan porque “se ven complicadas”, pero la realidad es que entenderlas puede ahorrarte:
- Dependencias innecesarias
- Código complejo
- Tiempo de procesamiento
- Memoria (clave en microcontroladores o sistemas limitados)
En esta guía aprenderás desde cero hasta un nivel avanzado, con ejemplos prácticos en JavaScript.
🚀 ¿Qué es RegEx?
Una expresión regular es un patrón que se usa para buscar, validar o manipular texto.
Ejemplo simple:
/hello/.test("hello world") // true
👉 Aquí estamos preguntando: ¿existe "hello" en el texto?
🔧 Cómo usar RegEx en JavaScript
Hay 2 formas principales:
1. Literal
const regex = /hello/;
2. Constructor
const regex = new RegExp("hello");
🧩 Métodos más usados
.test() → devuelve true/false
/hello/.test("hello world") // true
.match() → devuelve coincidencias
"hello world".match(/hello/)
.replace() → reemplaza texto
"hello world".replace(/world/, "dev")
// "hello dev"
.split() → divide usando regex
"uno,dos,tres".split(/,/)
🔤 Conceptos básicos
1. Texto literal
/cat/.test("cat") // true
2. Metacaracteres (lo importante empieza aquí) . → cualquier carácter
/c.t/.test("cat") // true
/c.t/.test("cut") // true
^ → inicio de string
/^hola/.test("hola mundo") // true
$ → final de string
/mundo$/.test("hola mundo") // true
🔢 Clases de caracteres
\d → número
/\d/.test("abc1") // true
\w → letra o número
/\w/.test("A") // true
\s → espacio
/\s/.test("hola mundo") // true
📦 Cuantificadores (cantidad)
- → uno o más
/\d+/.test("123") // true
- → cero o más
/\d*/.test("") // true
? → opcional
/colou?r/.test("color") // true
/colou?r/.test("colour") // true
{n} → exacto
/\d{3}/.test("123") // true
{n,m} → rango
/\d{2,4}/.test("123") // true
🎯 Ejemplo real (muy usado)
Validar formato tipo 10/30:
/^\d+\/\d+$/.test("10/30") // true
Explicación:
^ → inicio \d+ → números / → slash \d+ → números $ → final
🧠 Grupos () → agrupar
/(abc)+/.test("abcabc") // true
🔀 Alternativas
| → OR
/(perro|gato)/.test("gato") // true
🎨 Clases personalizadas
/[aeiou]/.test("hola") // true
👉 cualquier vocal
Negación
/[^0-9]/.test("a") // true
👉 cualquier cosa que NO sea número
⚙️ Flags (modificadores) i → ignore case
*/hola/i.test("HOLA") // true*
g → global
"hola hola".match(/hola/g)
m → multiline
/^hola/m.test("test\nhola") // true
🔥 Casos prácticos reales
✅ Validar email (simple)
/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test("test@mail.com")
🔐 Validar password fuerte
/^(?=.*[A-Z])(?=.*\d).{8,}$/
👉 mínimo:
1 mayúscula 1 número 8 caracteres
📞 Validar teléfono
/^\d{3}-\d{3}-\d{4}$/
🧹 Limpiar texto
"Hola!!!".replace(/[^a-zA-Z0-9 ]/g, "")
👉 elimina caracteres especiales
🔍 Extraer números
"precio: 123".match(/\d+/)[0] // "123"
⚡ Regex vs Librerías
Cuándo usar Regex:
✔ Validaciones simples ✔ Limpieza de datos ✔ Parsing rápido ✔ Ambientes con pocos recursos
Cuándo NO:
❌ HTML complejo ❌ JSON parsing ❌ Lógica compleja
🧠 Tips PRO Empieza simple, luego complica, Usa herramientas como: regex101.com Divide regex grandes en partes Usa comentarios (cuando sea posible)
⚠️ Errores comunes
❌ No escapar caracteres especiales
/\./ // correcto
/.*/ // diferente
❌ Regex demasiado compleja (ilegible)
🧩 Mentalidad para dominar Regex No memorices todo.
Aprende a pensar así: 👉 “¿Qué patrón estoy buscando?”
🏁 Conclusión
Regex no es magia negra.
Es simplemente:
una forma compacta de describir patrones de texto
Si la dominas, podrás:
- Escribir menos código
- Reducir dependencias
- Resolver problemas más rápido
👉 Si no entiendes regex, dependes de librerías. Si entiendes regex, construyes soluciones.