FmtDev
Idioma
Back to blog
March 26, 2026

5 Patrones Regex que todo desarrollador debería conocer

Domina los 5 patrones de expresiones regulares más útiles para el desarrollo diario. Cubre validación de emails, fuerza de contraseñas, coincidencia de URLs, direcciones IP y extracción de fechas.

Por qué la mayoría de los desarrolladores tienen dificultades con Regex

Las expresiones regulares son una de las herramientas más poderosas en el kit de un desarrollador. Pueden validar entradas, extraer datos, buscar texto y transformar cadenas de maneras que requerirían docenas de líneas de código manual.

Pero la mayoría de los desarrolladores evitan las regex porque la sintaxis se ve así:

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Eso parece aterrador. Pero regex no es tan difícil como parece. La mayoría de las tareas del mundo real usan los mismos patrones una y otra vez.

Esta guía cubre los 5 patrones que manejan el 90% de las necesidades diarias de regex.

Patrón 1: Validación de email

La tarea regex más común en desarrollo web.

Versión simple (suficiente para la mayoría de los casos)

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Desglose

| Parte | Significado | |---|---| | ^ | Inicio de la cadena | | [a-zA-Z0-9._%+-]+ | Uno o más caracteres válidos antes del @ | | @ | El símbolo @ literal | | [a-zA-Z0-9.-]+ | El nombre de dominio | | \. | Un punto literal | | [a-zA-Z]{2,} | Dominio de nivel superior (al menos 2 letras) | | $ | Fin de la cadena |

Qué coincide

✅ alice@example.com
✅ bob.smith@company.co.uk
✅ user+tag@gmail.com
❌ @missing-local.com
❌ no-at-sign.com
❌ spaces in@email.com

Advertencia importante

Ninguna regex puede validar perfectamente todas las direcciones de email según la RFC 5322. La especificación permite muchos formatos inusuales que harían que una regex verdaderamente conforme tuviera miles de caracteres.

Para uso en producción, valida el formato básico con regex, luego envía un email de confirmación. Es la única manera de verificar que una dirección de email realmente funciona.

Ejemplo JavaScript

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

function isValidEmail(email) {
  return emailRegex.test(email);
}

isValidEmail("alice@example.com");  // true
isValidEmail("not-an-email");       // false

Patrón 2: Validación de fuerza de contraseña

Aplicar requisitos mínimos de contraseña.

El patrón

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Desglose

| Parte | Significado | |---|---| | ^ | Inicio de la cadena | | (?=.*[A-Z]) | Debe contener al menos una mayúscula | | (?=.*[a-z]) | Debe contener al menos una minúscula | | (?=.*\d) | Debe contener al menos un dígito | | (?=.*[@$!%*?&]) | Debe contener al menos un carácter especial | | [A-Za-z\d@$!%*?&]{8,} | Mínimo 8 caracteres del conjunto permitido | | $ | Fin de la cadena |

Las partes (?=...) se llaman lookaheads. Verifican que se cumple una condición sin consumir caracteres. Esto permite aplicar múltiples reglas simultáneamente.

Qué coincide

✅ Str0ng!Pass       (mayúscula, minúscula, dígito, especial, 11 car.)
✅ MyP@ssw0rd        (mayúscula, minúscula, dígito, especial, 10 car.)
❌ weakpassword      (sin mayúscula, sin dígito, sin especial)
❌ SHORT!1           (solo 7 caracteres)
❌ NoSpecialChar1    (sin carácter especial)

Advertencia importante

La validación de contraseñas por regex tiene limitaciones. No puede verificar:

  • palabras del diccionario
  • caracteres repetidos (aaaaaa)
  • patrones secuenciales (123456)
  • contraseñas previamente comprometidas

Para seguridad real de contraseñas, usa una biblioteca como zxcvbn que estima la fuerza real basada en múltiples factores.

Patrón 3: Coincidencia de URLs

Extraer o validar URLs en texto.

Versión simple

https?:\/\/[^\s<>"{}|\\^`\[\]]+

Desglose

| Parte | Significado | |---|---| | https? | "http" o "https" (la s es opcional) | | :\/\/ | El literal "://" | | [^\s<>"{} | \\^ ` \[\]]+ | Uno o más caracteres que NO son espacios o caracteres inseguros para URLs |

Qué coincide

✅ https://example.com
✅ http://example.com/path?q=hello&lang=en
✅ https://sub.domain.com/page#section
❌ ftp://not-http.com
❌ example.com (sin protocolo)

Ejemplo JavaScript

const urlRegex = /https?:\/\/[^\s<>"{}|\\^`\[\]]+/g;

const text = "Visita https://example.com o http://docs.example.com/guide para más información.";
const urls = text.match(urlRegex);
// → ["https://example.com", "http://docs.example.com/guide"]

El flag g encuentra todas las coincidencias, no solo la primera.

Patrón 4: Validación de dirección IPv4

Validar direcciones IP como 192.168.1.1.

Versión simple (solo formato)

^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$

Versión estricta (rango válido 0-255)

^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$

Desglose de la versión estricta

Cada octeto coincide con uno de:

  • 25[0-5] → 250-255
  • 2[0-4]\d → 200-249
  • [01]?\d\d? → 0-199

El {3} repite los tres primeros octetos (cada uno seguido de un punto), luego coincide con el cuarto sin punto final.

Qué coincide

✅ 192.168.1.1
✅ 10.0.0.0
✅ 255.255.255.255
❌ 256.1.1.1        (256 fuera de rango)
❌ 192.168.1        (solo 3 octetos)
❌ 192.168.1.1.1    (5 octetos)

Ejemplo JavaScript

const ipRegex = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;

ipRegex.test("192.168.1.1");   // true
ipRegex.test("256.1.1.1");     // false
ipRegex.test("10.0.0.0");      // true

Patrón 5: Extracción de fechas (AAAA-MM-DD)

Encontrar y extraer fechas en formato ISO 8601.

El patrón

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

Desglose

| Parte | Significado | |---|---| | \d{4} | Cuatro dígitos (año) | | - | Guion literal | | (0[1-9]\|1[0-2]) | Mes: 01-12 | | - | Guion literal | | (0[1-9]\|[12]\d\|3[01]) | Día: 01-31 |

Qué coincide

✅ 2026-03-26
✅ 2025-12-31
✅ 2000-01-01
❌ 2026-13-01   (mes 13)
❌ 2026-00-15   (mes 00)
❌ 26-03-2026   (formato incorrecto)

Ejemplo JavaScript

const dateRegex = /\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])/g;

const text = "El evento va del 2026-03-15 al 2026-04-20.";
const dates = text.match(dateRegex);
// → ["2026-03-15", "2026-04-20"]

Nota importante

Esta regex valida el formato pero no la lógica. Aceptará 2026-02-31 (31 de febrero) que no es una fecha real. Para validación completa de fechas, parsea la cadena encontrada con una biblioteca de fechas después de la extracción por regex.

Probar regex de forma segura

Cuando construyes y pruebas patrones regex, necesitas una herramienta que te permita:

  • escribir el patrón
  • probarlo contra cadenas de ejemplo
  • ver las coincidencias resaltadas en tiempo real
  • entender qué hace cada parte del patrón

Muchos probadores de regex en línea envían tus cadenas de prueba a sus servidores. Si estás probando patrones contra datos reales (archivos de logs, registros de usuarios, respuestas de API), tus datos están siendo transmitidos a un tercero.

Usa un probador de regex que se ejecute completamente en tu navegador. Ningún dato debería salir de tu máquina.

El probador de regex FmtDev procesa todo localmente. Tus cadenas de prueba nunca salen de tu navegador.

Referencia rápida de Regex

| Símbolo | Significado | Ejemplo | |---|---|---| | . | Cualquier carácter | a.c → "abc", "a1c" | | \d | Cualquier dígito | \d{3} → "123" | | \w | Cualquier carácter de palabra | \w+ → "hello" | | \s | Cualquier espacio | \s+ → " " | | + | Uno o más | a+ → "aaa" | | * | Cero o más | a* → "", "aaa" | | ? | Cero o uno | colou?r → "color", "colour" | | {n} | Exactamente n veces | \d{4} → "2026" | | {n,m} | Entre n y m veces | \d{2,4} → "26", "2026" | | ^ | Inicio de cadena | ^Hello | | $ | Fin de cadena | world$ | | [abc] | Cualquiera de a, b o c | [aeiou] → vocales | | [^abc] | NO a, b o c | [^0-9] → no-dígitos | | (...) | Grupo de captura | (\d{4}) captura el año | | (?=...) | Lookahead | (?=.*\d) requiere un dígito | | \| | O | cat\|dog → "cat" o "dog" |

Puntos clave

  1. La regex de email valida el formato — envía un email de confirmación para verificación real
  2. La regex de contraseña verifica requisitos mínimos — usa zxcvbn para estimación real de fuerza
  3. La regex de URL coincide con enlaces http/https — ajusta según tus necesidades específicas
  4. La regex de IPv4 debe verificar el rango 0-255, no solo la cantidad de dígitos
  5. La regex de fecha valida el formato pero no la lógica — parsea con una biblioteca de fechas después
  6. Siempre prueba los patrones regex localmente con datos reales — nunca pegues cadenas sensibles en herramientas en línea

Artículos relacionados

Herramienta Asociada

¿Listo para usar la herramienta Probador Visual de Regex en Línea? Todo el procesamiento es local.

Abrir Probador Visual de Regex en Línea