¿Qué es una expresión regular?
Una expresión regular (regex) es un patrón que describe un conjunto de textos: sirve para buscar, validar o extraer fragmentos sin escribir bucles a mano. En esta mini referencia tienes los tokens que cubren el 90 % de los casos del día a día.
| Token | Qué coincide |
|---|---|
| . | Cualquier carácter, excepto el salto de línea (con la flag s, también lo incluye). |
| * | El elemento anterior, cero o más veces. |
| + | El elemento anterior, una o más veces. |
| ? | El elemento anterior, cero o una vez (es opcional). |
| [abc] | Cualquiera de los caracteres entre corchetes; [a-z] define rangos. |
| (...) | Grupo de captura: guarda por separado lo que coincide dentro. |
| a|b | Alternativa: coincide «a» o «b». |
| \d | Un dígito del 0 al 9. |
| \w | Letra, dígito o guion bajo. |
| \s | Espacio, tabulación o salto de línea. |
| {n,m} | Entre n y m repeticiones del elemento anterior. |
Cómo usar el probador, paso a paso
- Escribe el patrón sin las barras /…/: en JavaScript se compila solo la expresión, no los delimitadores.
- Marca las flags que necesites: la g viene activada porque lo normal es querer todas las coincidencias.
- Pega o escribe el texto de prueba: el conteo, el resaltado y la lista de coincidencias se actualizan mientras tecleas.
- Si el patrón no compila, verás el mensaje de error del navegador y el último resultado válido sigue en pantalla: corrige y sigue.
- Copia los resultados en texto plano o comparte la URL, que guarda el patrón, las flags y el texto si no supera los 500 caracteres.
Las flags, una a una
- g (global): recorre el texto entero y encuentra todas las coincidencias en orden; sin ella, la búsqueda se detiene en la primera.
- i (ignore case): ignora mayúsculas y minúsculas, de modo que «CASA», «Casa» y «casa» equivalen para el patrón.
- m (multiline): hace que ^ y $ coincidan al inicio y al final de cada línea, no solo del texto completo.
- s (dotAll): permite que el punto (.) también coincida con saltos de línea.
- u (unicode): activa el modo Unicode: habilita las clases \p{…}, como \p{L} para cualquier letra con acentos, y trata correctamente los caracteres fuera del plano básico, como los emojis.
Ejemplos prácticos (los mismos de los botones)
Cada ejemplo de la herramienta rellena el patrón, las flags y un texto de prueba donde hay coincidencias garantizadas. Estos son, tal cual:
- Email: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} con g encuentra «ana@example.com» y «soporte+utilia@mail.es».
- URL: https?://[^\s]+ con g captura las dos direcciones del ejemplo, incluida la query ?clave=abc.
- Fecha ISO: \d{4}-\d{2}-\d{2} con g encuentra 1990-05-21 y 2024-12-31.
- Matrícula: \d{4}-[A-Z]{3} con g encuentra 1234-ABC y 9876-XYZ.
- Teléfono: (?:\+34[ -]?)?[6789]\d{2}[ -]?\d{3}[ -]?\d{3} con g encuentra 612 345 678 y +34 911 223 344.
- Código postal: (?:0[1-9]|[1-4]\d|5[0-2])\d{3} con g: los dos primeros dígitos van de 01 a 52, así que encuentra 28080 y 08013 pero no 99999.
Aviso honesto: JavaScript no permite interrumpir una expresión regular en marcha. Un patrón con backtracking exponencial (grupos con alternativas que comparten prefijo, cuantificadores anidados) puede congelar la pestaña con textos largos. El límite de 50.000 caracteres mitiga el caso más común, pero conviene probar primero con textos pequeños.