Sobre la herramienta: Probador de regex
Una expresión regular (regex) es un pequeño lenguaje de patrones para buscar o sustituir texto que sigue una regla: validar formularios, analizar logs o hacer buscar y reemplazar masivo. Este probador usa el motor de expresiones regulares de JavaScript de tu navegador, así que obtienes exactamente el mismo resultado que en código JavaScript o TypeScript.
La búsqueda se ejecuta en un hilo aparte (Web Worker). Si un patrón mal construido tarda demasiado, se detiene automáticamente a los 1,5 segundos y la página no se bloquea.
Cómo se usa
- Elige un ejemplo en Patrones habituales o escribe tu propia expresión. No hace falta poner las barras (/) alrededor.
- Activa o desactiva los flags que necesites (g, i, m, s, u, y).
- Escribe el texto de prueba: las coincidencias se resaltan y la lista inferior muestra su posición y el valor de cada grupo.
- Usa $1, $<nombre> o $& en Reemplazo para ver cómo quedaría el texto sustituido.
Chuleta de regex
| Sintaxis | Significado | Ejemplo |
|---|---|---|
| \d \w \s | dígito / letra, dígito o _ / espacio | \d{5} |
| . | cualquier carácter salvo salto de línea (incluido con el flag s) | a.c |
| * + ? {n,m} | 0 o más / 1 o más / 0 o 1 / de n a m veces | \d{3,4} |
| ^ $ | inicio / fin (de cada línea con el flag m) | ^\d+$ |
| [áéíóúñ] | clase de caracteres – ¡\w no incluye tildes ni la ñ! | [A-Za-zÁÉÍÓÚáéíóúÑñ]+ |
| ( ) (?: ) | grupo de captura / grupo sin captura | (\d{2})/(\d{2}) |
| (?<nombre> ) | grupo con nombre | (?<year>\d{4}) |
| (?= ) (?! ) | búsqueda anticipada / anticipada negativa | \d+(?=\s?€) |
Qué hace cada flag
- g (global): busca todas las coincidencias, no solo la primera.
- i (ignoreCase): no distingue mayúsculas de minúsculas.
- m (multiline): ^ y $ coinciden al inicio y al final de cada línea.
- s (dotAll): el punto (.) también coincide con saltos de línea.
- u (unicode): trata un emoji como un solo carácter y permite \p{…}, p. ej. \p{L} para todas las letras, con tildes incluidas.
- y (sticky): solo intenta coincidir en la posición actual (lastIndex).
Cuidado con el backtracking catastrófico (ReDoS)
Los patrones con repeticiones anidadas como ^(a+)+$ pueden tardar un tiempo exponencial con textos que no coinciden y bloquear un servidor: es lo que se conoce como ataque ReDoS. Si aquí se agota el tiempo, elimina el anidamiento, por ejemplo cambiando (a+)+ por a+.
Preguntas frecuentes
¿El patrón de DNI comprueba si la letra es correcta?
No. La expresión regular solo comprueba el formato (8 cifras y una letra). La letra de control se calcula con el resto de dividir el número entre 23, algo que una regex no puede hacer. Lo que escribes no se envía a ningún servidor.
¿Los resultados son iguales que en Python, Java o PCRE?
La sintaxis básica es casi la misma, pero hay diferencias de detalle. Python escribe los grupos con nombre como (?P
¿Por qué \w no encuentra la ñ ni las tildes?
En JavaScript, \w solo cubre A–Z, a–z, 0–9 y _. Para palabras en español usa [A-Za-zÁÉÍÓÚÜáéíóúüÑñ] o, con el flag u, la clase \p{L}.
¿Qué pasa si hay muchísimas coincidencias?
Se buscan y resaltan hasta 5000 coincidencias; la tabla muestra las 300 primeras.