Patrones regex habituales

Usa los patrones como punto de partida y pruébalos en tu motor. Coincidir con un formato no demuestra que una dirección, fecha o cuenta sea válida.

Se ejecuta localmente en tu navegador
Caso de usoExpresión regularNotas
Dirección de correo ^[^\s@]+@[^\s@]+\.[^\s@]+$ Comprobación sintáctica práctica; la entrega requiere verificación.
URL HTTP o HTTPS ^https?:\/\/[^\s]+$ Comprueba el esquema y rechaza espacios; utiliza un parser de URL para una validación completa.
Dirección IPv4 ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$ Acepta octetos de 0 a 255.
UUID versiones 1–5 ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ Comprueba el formato estándar con guiones y los bits de variante RFC.
Fecha con formato ISO ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ Comprueba el formato YYYY-MM-DD, no el número de días específico de cada mes.
Hora de 24 horas ^(?:[01]\d|2[0-3]):[0-5]\d$ Acepta valores entre 00:00 y 23:59.
Color hexadecimal ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$ Admite las notaciones RGB, RRGGBB y RRGGBBAA.
Versión semántica ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ Coincide con versiones base y metadatos opcionales de prerelease y build.
Entero con signo ^-?\d+$ Permite un signo menos opcional.
Número decimal ^-?(?:\d+|\d*\.\d+)$ Acepta enteros y fracciones decimales, incluidos valores como .5.
Slug de URL ^[a-z0-9]+(?:-[a-z0-9]+)*$ Palabras ASCII en minúsculas separadas por guiones simples.
Etiqueta similar a HTML <\/?[A-Za-z][^>]*> Útil solo para extracciones sencillas; procesa HTML con un parser HTML.
Espacios iniciales o finales ^\s+|\s+$ Usa el modificador global para eliminar espacios en ambos extremos.
Línea vacía ^\s*$ Usa el modo multilínea para evaluar cada línea por separado.
Palabra adyacente repetida \b([A-Za-z]+)\s+\1\b Usa el modo sin distinción de mayúsculas si no importa la capitalización.

Notas de portabilidad

JavaScript, PCRE, Python, Java, .NET, Go y Ruby no implementan exactamente las mismas funciones regex. Comprueba el motor de destino antes de utilizar lookbehind, grupos con nombre, propiedades Unicode, cuantificadores posesivos o modificadores inline.

En validaciones sensibles para la seguridad, normaliza primero la entrada, aplica límites de longitud explícitos y utiliza un parser específico cuando el formato disponga de uno.

Cómo usar Patrones regex habituales

Quince patrones listos para los valores que suelen aparecer en un formulario, una línea de log o un archivo de configuración: correo electrónico, URL HTTP o HTTPS, dirección IPv4, UUID versiones 1-5, fecha con formato ISO, hora de 24 horas, color hexadecimal, versión semántica, entero con signo, número decimal, slug de URL, etiqueta similar a HTML, espacios iniciales o finales, línea vacía y palabra adyacente repetida.

La tabla es toda la página: no hay campo donde escribir ni nada que ejecutar. Cada fila indica qué comprueba su patrón y qué deja pasar, porque coincidir con un formato no es validar un dato real. La fila de fecha acepta 2024-02-31 y la de correo no puede saber si una dirección recibe mensajes, así que toma el patrón como punto de partida y pruébalo en el motor que lo vaya a ejecutar.

  1. Escribe en el buscador, o pulsa / en cualquier punto de la página, para filtrar la tabla por caso de uso, patrón o nota.
  2. Mira el contador bajo el campo: siempre indica cuántas de las 15 filas se están mostrando.
  3. Pulsa el botón de copiar de la celda del patrón para llevar esa expresión regular al portapapeles como texto plano.
  4. Lee la nota de la misma fila antes de quedarte con el patrón: nombra los casos que tolera y los que no.
  5. Abre el Probador de expresiones regulares para probarlo con texto de ejemplo, o el Generador de código regex para adaptarlo a un lenguaje.

Qué comprueba cada patrón y qué no

Comportamiento comprobado en el navegador

La fila IPv4 acepta 0.0.0.0 y 255.255.255.255 y rechaza 256.1.1.1, 1.2.3 y 1.2.3.4.5. La fila UUID exige la forma con guiones, un dígito de versión entre 1 y 5 y un nibble de variante RFC igual a 8, 9, a o b, así que los identificadores de versión 6 y 7 no coinciden. La fila de versión semántica acepta 1.0.0, 1.0.0-alpha.1 y 1.0.0+build.1, mientras que v1.0.0 y 01.0.0 fallan.

Varias filas son laxas a propósito. 2024-02-31 pasa la fila de fecha porque el patrón desconoce la longitud de los meses, y 2024-13-01 no pasa. La fila de hora espera dos dígitos: 09:30 coincide y 9:30 no. La fila de entero rechaza +5, la de decimal acepta .5 y rechaza 5., y la de slug mantiene un solo guion y letras en minúscula.

Buscar, contar y copiar

El filtro lee la fila completa, no solo su título: «octet» encuentra la fila IPv4 por su nota, «^https» encuentra la fila de URL por el propio patrón y «blank» encuentra la fila de línea vacía. El contador indica el total de 15, Escape limpia el campo cuando tiene el foco y el botón Limpiar hace lo mismo en pantalla táctil.

El botón de la fila copia únicamente la expresión regular, con sus anclas y sin comillas añadidas, de modo que el resultado puede ir directo al código, a un archivo de pruebas o a una regla de validación. El caso de uso y la nota se quedan en la página: son contexto, no parte del patrón.

Banderas y diferencias entre motores

Tres filas solo cumplen su función con las banderas adecuadas: la de espacios iniciales o finales necesita la bandera global para recortar ambos extremos, la de línea vacía necesita el modo multilínea para que ^ y $ se evalúen en cada línea, y la de palabra repetida necesita la bandera de ignorar mayúsculas para leer «The the» como repetición.

El límite mayor es la portabilidad. Lookbehind, grupos con nombre, propiedades Unicode y cuantificadores posesivos no se implementan igual en JavaScript, PCRE, Python, Java, .NET, Go y Ruby, y un patrón copiado de esta página arrastra las suposiciones del motor para el que fue escrito. Consulta la documentación del motor de destino y mantén la expresión en una prueba que recorra las cadenas que tu servicio ve de verdad.

Herramientas recientes: