tutorial

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

Jose Gratereaux

Author

Guía Completa de RegEx (Expresiones Regulares) de cero a Pro

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.

Jose Gratereaux

Jose Gratereaux

I'm a software engineer specialized in Laravel, building modern web applications and sharing what I learn along the way. If you enjoyed this post, consider following me on GitHub.