Chuleta de regex

Chuleta de regex: sintaxis + 30 patrones probados | We.Inc

La sintaxis de regex en una tabla y 30 patrones listos para email, URL, teléfono, código postal, contraseña, fechas y más. Cada uno se prueba en vivo con ejemplos que deben coincidir y no coincidir, y puedes editarlos.

Chuleta de regex

Una expresión regular es un patrón para buscar coincidencias en un texto. \d coincide con un dígito, \w con un carácter de palabra, + significa uno o más, ? hace algo opcional, y ^ y $ fijan la coincidencia al principio y al final. Abajo tienes la sintaxis completa y 30 patrones probados, cada uno comprobado en vivo con cadenas que deben coincidir y otras que no.

Seis símbolos que cubren la mayoría de los patrones

Copia un patrón y prueba tu propio texto en la casilla de al lado. Cada patrón de esta página incluye ejemplos que deben coincidir y ejemplos que no, y la página los ejecuta en tu navegador para que veas cada resultado.

Preguntas frecuentes

¿Cuál es la mejor regex para direcciones de email?

Una práctica es ^[^\s@]+@[^\s@.]+(\.[^\s@.]+)+$: algo de texto, una @ y un dominio con al menos un punto. Detecta erratas sin rechazar direcciones poco habituales pero válidas. Ninguna regex puede saber si una dirección existe de verdad, así que envía un email de confirmación.

¿Cómo valido un número de teléfono con regex?

Quita los espacios, guiones y paréntesis y comprueba el formato E.164: ^\+[1-9]\d{6,14}$. Para números de EE. UU. y Canadá escritos con separadores, usa el patrón norteamericano de esta página. Para una validación completa por país, una librería de números de teléfono es más fiable.

¿Qué significa ^ en regex?

Fuera de los corchetes, ^ fija la coincidencia al principio del texto, o de cada línea con el flag m. Dentro de los corchetes y como primer carácter, como en [^0-9], significa ninguno de estos caracteres.

¿Por qué mi regex funciona en JavaScript pero no en Python?

Las variantes difieren en detalles: Python escribe los grupos con nombre como (?P<name>...), no admite \p{L} en su módulo re integrado y solo permite lookbehind de longitud fija. Consulta la tabla de lenguajes de esta página para ver las diferencias habituales.

¿Qué diferencia hay entre greedy y lazy?

Los cuantificadores greedy como * y + toman todo el texto que pueden y luego retroceden. Añadir ? los vuelve lazy, de modo que toman lo mínimo posible. En <b>x</b><b>y</b>, <.+> coincide con todo, mientras que <.+?> coincide solo con <b>.

Leer un patrón de izquierda a derecha

Errores habituales

Referencia de sintaxis regex (variante de JavaScript)

Flags de JavaScript

Las mismas ideas en JavaScript, Python y PHP

Dirección de email (práctica)

Algo, una @ y luego un dominio con al menos un punto. Sin espacios.

Ninguna regex comprueba del todo una dirección de email. Envía un email de confirmación para saber si es real.

Dirección web (http o https)

http o https, un host con al menos un punto, un puerto opcional y después cualquier ruta, query o fragmento sin espacios.

En JavaScript, new URL(value) dentro de un bloque try es la comprobación más estricta.

Nombre de dominio

Etiquetas de letras, dígitos y guiones internos, separadas por puntos y terminadas en un dominio de nivel superior solo con letras.

Slug de URL

Letras minúsculas y dígitos en grupos unidos por guiones simples.

Número de teléfono internacional (E.164)

Un signo más, un código de país que no empieza por 0 y de 7 a 15 dígitos en total, sin espacios.

Quita primero los espacios, guiones y paréntesis. Para una validación real por país, usa una librería de teléfonos.

Número de teléfono de EE. UU. y Canadá

+1 opcional, un código de área de 3 dígitos y un prefijo que no empiezan por 0 ni por 1, y después 4 dígitos, con los separadores habituales.

Código ZIP de EE. UU.

Cinco dígitos, seguidos opcionalmente de un guion y cuatro más (ZIP+4).

Código postal del Reino Unido

Una o dos letras, un dígito, una letra o un dígito opcional, un espacio opcional y después un dígito y dos letras.

Solo comprueba la forma. Acepta algunos códigos que no existen.

Código postal de Canadá

Letra, dígito, letra, espacio opcional, dígito, letra, dígito. Las letras D, F, I, O, Q y U nunca se usan, y W y Z nunca van primero.

Color HEX

Un # y después 3, 4, 6 u 8 dígitos hexadecimales (las formas de 4 y 8 incluyen transparencia).

Contraseña con caracteres variados

Al menos 12 caracteres, con una minúscula, una mayúscula, un dígito y un símbolo, comprobados con lookaheads.

La longitud importa más que la mezcla. Muchos equipos ahora solo exigen una longitud mínima y comprueban la contraseña contra listas de contraseñas filtradas.

Nombre de usuario

De 3 a 20 caracteres de letras y dígitos; puntos y guiones bajos permitidos solo entre ellos y nunca dobles.

Dirección IPv4

Cuatro números de 0 a 255 separados por puntos, sin ceros a la izquierda.

Fecha ISO 8601 (YYYY-MM-DD)

Año de cuatro dígitos, mes de 01 a 12, día de 01 a 31.

Permite 2026-02-31. Analiza la fecha después para rechazar los días que no existen.

Hora en formato de 24 horas (HH:MM)

Horas de 00 a 23, dos puntos y minutos de 00 a 59.

Hora en formato de 12 horas con am o pm

Horas de 1 a 12, minutos y después am o pm con puntos y espacio opcionales.

Número entero

Signo menos opcional y después 0 o un número sin ceros a la izquierda.

Número decimal

Un número entero con un punto opcional y al menos un dígito después.

Precio con separadores de miles

Signo de dólar opcional, dígitos con grupos de comas correctos (o sin ellos) y céntimos opcionales de dos dígitos.

Porcentaje de 0 a 100

Un número de 0 a 100 con decimales opcionales, seguido de %.

Forma de número de tarjeta (de 13 a 19 dígitos)

De 13 a 19 dígitos, agrupados opcionalmente con espacios o guiones.

Solo la forma. Usa el algoritmo de Luhn y tu proveedor de pagos para validar una tarjeta.

Versión semántica

MAJOR.MINOR.PATCH sin ceros a la izquierda, con partes opcionales -prerelease y +build.

UUID

Dígitos hexadecimales en grupos 8-4-4-4-12 con un dígito de versión de 1 a 8 y la variante estándar.

Etiqueta HTML sencilla

Una etiqueta de apertura, texto sin otras etiquetas y la etiqueta de cierre correspondiente (la referencia \1 repite el nombre).

No analices HTML completo con regex. Usa DOMParser o un analizador de HTML.

Vacío o solo espacios

Nada más que espacios, tabulaciones o saltos de línea. Útil para rechazar campos de formulario vacíos.

Hashtag

Un # seguido de letras (de cualquier alfabeto), dígitos o guiones bajos. Requiere el flag u para \p{L}.

Dirección de vídeo de YouTube

Las formas habituales watch, embed, shorts y enlace corto. El grupo 1 captura el ID de vídeo de 11 caracteres.

Nombre de archivo de imagen

Un nombre de archivo sin caracteres no permitidos en rutas, terminado en una extensión de imagen habitual.

Usuario de redes sociales (@nombre)

Una @ y de 1 a 15 letras, dígitos o guiones bajos, la regla que usa X (antes Twitter).

Palabra repetida

Encuentra una palabra escrita dos veces seguidas, como 'the the'. No está anclado, así que busca dentro del texto.

(vacío)

no coincide

Copiar

Debe coincidir

No debe coincidir

Prueba tu propio valor

Coincide

No coincide

Probador rápido

Patrón

Flags

Texto

No hay coincidencias.

en {n}:

grupos:

Sintaxis

Flags

{n} patrones probados

Filtrar

email, fecha, teléfono…

Ningún patrón coincide con ese filtro.

JavaScript, Python y PHP

Publicado 2026-10, parcheado 2026-11, previsto 2027-02.

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio