Saltar al contenido
ToolMug

Patrones regex comunes

Expresiones regulares listas para usar en validaciones del día a día — email, URL, dominio, direcciones IPv4 y MAC, enteros, decimales e importes de dinero, fechas y horas, nombres de usuario, contraseñas seguras, colores hexadecimales, UUID y versiones semánticas, además de formatos chinos de teléfono, DNI y código postal. Cada patrón incluye una descripción y ejemplos que coinciden y que no coinciden; cópialo con un clic o escribe en el cuadro para probarlo.

Funciona en tu navegador: nada de lo que introduces se sube

  • Dirección de correo

    Formato habitual de correo con puntos, signos más y dominios multinivel

    /^[\w.+-]+@[\w-]+(\.[\w-]+)+$/

    ✓ name@example.com a.b+tag@mail.co.uk✗ name@ @example.com a b@example.com

  • URL (http/https)

    Empieza por http:// o https:// y no contiene espacios

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

    ✓ https://example.com/path?q=1 http://localhost:8080✗ ftp://example.com example.com https:// bad

  • Nombre de dominio

    Dominio multinivel de letras, dígitos y guiones

    /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$/

    ✓ example.com sub.example.co.uk✗ -bad.com example exa_mple.com

  • Dirección IPv4

    Cuatro números de 0 a 255 sin ceros a la izquierda

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

    ✓ 192.168.1.1 8.8.8.8 255.255.255.0✗ 256.1.1.1 1.2.3 01.2.3.4

  • Dirección MAC

    Seis pares de dígitos hexadecimales separados por dos puntos o guiones

    /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/

    ✓ 00:1A:2B:3C:4D:5E 00-1a-2b-3c-4d-5e✗ 001A2B3C4D5E 00:1A:2B:3C:4D

  • Número de móvil de China

    11 dígitos que empiezan por 13–19, sin +86

    /^1[3-9]\d{9}$/

    ✓ 13800138000 19912345678✗ 12345678901 1380013800 +8613800138000

  • Fijo de China

    Prefijo más número, opcionalmente separados por un guion

    /^0\d{2,3}-?\d{7,8}$/

    ✓ 010-12345678 0755-1234567 02112345678✗ 12345678 010-123

  • DNI chino (18 dígitos)

    Comprueba la longitud del código de región y la fecha de nacimiento; el último carácter puede ser X. No se verifica el dígito de control.

    /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/

    ✓ 11010519491231002X 440308199901010012✗ 11010519491331002X 1101051949123100

  • Código postal de China

    Seis dígitos

    /^\d{6}$/

    ✓ 100000 010000✗ 10000 1000000

  • Matrícula de China

    7 caracteres para matrículas normales, 8 para vehículos de nueva energía

    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/

    ✓ 京A12345 粤BD12345 沪A1234学✗ 京12345 京AI2345

  • Solo caracteres chinos

    Solo ideogramas CJK habituales

    /^[\u4e00-\u9fa5]+$/

    ✓ 中文 正则表达式✗ 中文abc

  • Número de QQ

    5 a 11 dígitos, sin empezar por 0

    /^[1-9]\d{4,10}$/

    ✓ 10001 123456789✗ 01234 1234

  • Número de tarjeta bancaria

    16 a 19 dígitos; la validez también necesita una comprobación de Luhn

    /^[1-9]\d{15,18}$/

    ✓ 6222021234567890123 4111111111111111✗ 0222021234567890 622202123456

  • Entero

    Opcionalmente negativo

    /^-?\d+$/

    ✓ 0 -42 12345✗ 1.5 1e3

  • Entero positivo

    Sin cero a la izquierda

    /^[1-9]\d*$/

    ✓ 1 100✗ 0 01 -1

  • Número decimal

    Opcionalmente negativo, con dígitos en ambos lados del punto

    /^-?\d+(?:\.\d+)?$/

    ✓ 3.14 -0.5 42✗ .5 1. 1,000

  • Importe monetario

    No negativo, con hasta dos decimales

    /^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/

    ✓ 0 99.9 1234.56✗ 01.00 1.234 -1

  • Fecha (AAAA-MM-DD)

    Mes 01–12 y día 01–31; no se comprueba la duración de los meses

    /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/

    ✓ 2026-09-26 1999-12-31✗ 2026-13-01 2026-9-26 26-09-2026

  • Hora (HH:MM[:SS])

    Formato de 24 horas, los segundos son opcionales

    /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/

    ✓ 09:30 23:59:59✗ 24:00 9:30 12:60

  • Nombre de usuario

    Empieza por una letra; de 4 a 16 letras, dígitos o guiones bajos

    /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/

    ✓ alice_01 Bob2026✗ 1alice ab bad-name

  • Contraseña segura

    Al menos 8 caracteres con mayúsculas, minúsculas, un dígito y un símbolo

    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$/

    ✓ Passw0rd! Aa1@aaaa✗ password Password1 Aa1@

  • Color hexadecimal

    #RGB o #RRGGBB

    /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/

    ✓ #fff #0F766E✗ fff #ffff #12345g

  • UUID

    Formato estándar de UUID (versiones 1 a 8)

    /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i

    ✓ 123e4567-e89b-42d3-a456-426614174000✗ 123e4567-e89b-42d3-c456-426614174000 123e4567e89b42d3a456426614174000

  • Versión semántica

    MAYOR.MENOR.PARCHE con metadatos opcionales de preversión y compilación

    /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/

    ✓ 1.0.0 2.1.3-beta.1+build.5✗ 1.0 01.0.0 v1.0.0

  • Par de etiquetas HTML

    Encuentra etiquetas de apertura y cierre coincidentes, capturando el nombre de la etiqueta y el contenido

    /<([a-zA-Z][\w-]*)\b[^>]*>([\s\S]*?)<\/\1>/g

    ✓ <b>bold</b> <a href="#">link</a>✗ <b>unclosed plain text

  • Línea vacía

    Con la marca m, encuentra líneas vacías o solo con espacios, por ejemplo para eliminarlas

    /^\s*$/m

    ✓ ✗ text

Los patrones usan sintaxis de JavaScript y funcionan en la mayoría de los lenguajes, como Java, Python y Go (cuidado con el escape de la barra invertida). Solo comprueban el formato; para saber si un número de identidad o de tarjeta es real hace falta un dígito de control o una validación oficial.

Cómo se usa

  1. Busca un formato o filtra por categoría.
  2. Haz clic en «Copiar» para llevarte el patrón; escapa las barras invertidas al ponerlo en una cadena de texto.
  3. Escribe en el cuadro debajo de una tarjeta para ver al instante si coincide.

Opciones explicadas

Sintaxis
Escrito para JavaScript y compatible con la mayoría de los lenguajes, como Java, Python, Go y PHP; dentro de literales de cadena, duplica las barras invertidas.
Coincidencia de la cadena completa
Los patrones de validación están anclados con ^ y $, así que debe coincidir toda la entrada. Para buscar dentro de un texto más largo, quita las anclas y añade el flag g.
Formato frente a validez
Un patrón solo comprueba el formato. Que un DNI o un número de tarjeta sea real necesita un dígito de control o una comprobación oficial.

Cómo se construye un patrón: el ejemplo de IPv4

El patrón de IPv4 muestra la estructura habitual de una expresión regular de validación. Un octeto se escribe como cuatro alternativas que se prueban en orden, de modo que cada una acepta solo 0–255:

25[0-5]      250–255
2[0-4]\d     200–249
1\d\d        100–199
[1-9]?\d     0–99, sin cero a la izquierda

El patrón completo es (octeto\.){3}octeto, anclado con ^ y $. Por eso 192.168.1.1 coincide, mientras que 256.1.1.1, 01.2.3.4 y 1.2.3 no.

El formato no es validez

Un patrón comprueba solo la forma. El patrón de fecha acepta 2026-02-30 porque permite el día 30 en todos los meses, y rechaza 2026-13-01 porque el mes 13 no existe. Para fechas reales, analiza el valor con la biblioteca de fechas de tu lenguaje después de la comprobación con la regex.

Preguntas frecuentes

¿Por qué el regex de email no cumple del todo el RFC?

Un regex totalmente conforme con el RFC 5322 es enorme y rechaza pocos errores reales. Usa una comprobación permisiva y confirma la dirección con un correo de verificación.

¿Cómo depuro un regex más complejo?

Usa el probador de expresiones regulares, que resalta cada coincidencia y grupo y puede probar reemplazos.

¿Estos patrones admiten Unicode?

La mayoría están pensados para texto ASCII. Añade el flag u y los escapes de propiedad Unicode como \p{L} si necesitas aceptar letras de cualquier alfabeto.

Privacidad

Esta herramienta funciona por completo en tu navegador. Tus archivos y textos se procesan en tu dispositivo y nunca se suben a nuestros servidores.

Herramientas relacionadas