Prueba de expresiones regulares
Prueba de expresiones regulares
La prueba de expresiones regulares online admite coincidencias en tiempo real, grupos de captura, grupos con nombre y vista previa de reemplazo; es útil para validar patrones, extraer texto y hacer reemplazos masivos.
/
/g
Búsqueda global
Ignorar mayúsc./minúsc.
Multilínea
Punto incluye saltos de línea
Modo Unicode
Coincidencia fija
Texto de prueba
Texto de reemplazo
Resultados de coincidencia
Ingrese un patrón para comenzar a combinar
Vista previa de reemplazo
Inicio rápido
Escenarios comunes
Extrae ID, correos, fechas o marcas personalizadas desde logs, código fuente o texto sin procesar.
Verifica primero la precisión de la coincidencia antes de llevar la regla a código, validación de formularios o búsquedas.
Usa grupos de captura y grupos con nombre para reemplazar estructuras de texto o contenido de campos por lotes.
Consejos de uso
Limitaciones y compatibilidad
Privacidad y seguridad
Preguntas frecuentes
Una expresión regular (regex) es un lenguaje de patrones para describir estructuras de texto. Piense en ello como una "búsqueda avanzada": en lugar de buscar una palabra fija, busca todo lo que coincida con una regla.\n\nPor ejemplo, \\d{4}-\\d{2}-\\d{2} coincide con todas las fechas en formato AAAA-MM-DD, y [\\w.]+@[\\w.]+ coincide con direcciones de correo electrónico. Regex se usa ampliamente para: búsqueda y extracción de texto (encontrar códigos de error en registros), validación de formato (verificar números de teléfono) y reemplazo por lotes (convertir formatos de fecha).\n\nCasi todos los lenguajes de programación (JavaScript, Python, Java, Go, etc.) y muchas herramientas (VS Code, grep, sed) admiten expresiones regulares con sintaxis en su mayoría similar. Esta herramienta utiliza el motor JavaScript RegExp para realizar pruebas y aprendizaje rápidos en línea.
La expresión regular de JavaScript devuelve solo la primera coincidencia de forma predeterminada; este es un comportamiento de especificación del lenguaje, no una limitación de la herramienta. Haga clic en el botón g en la barra de banderas para habilitar la búsqueda global y ver todas las coincidencias.\n\nTenga en cuenta la interacción entre g e y: g escanea todo el texto de principio a fin, mientras que y (fijo) requiere que cada coincidencia comience exactamente donde terminó la anterior; si hay espacios entre coincidencias, y se detiene en el primer espacio. Por lo general, basta con habilitar g sin y.
Hay cuatro causas comunes:\n\n1. Corchetes no coincidentes: cada (debe tener una coincidencia), cada [debe tener una coincidencia]. Los IDE pueden autocompletarlos, pero esta herramienta requiere emparejamiento manual.\n2. Cuantificadores mal colocados: los cuantificadores (*, +, ?, {n}) deben seguir a un elemento cuantificable. Combinaciones como *+ o ?* son ilegales, a menos que el primer cuantificador sea ? para modificación diferida (como *?).\n3. Escapes incompletos: un \\ solitario al final es ilegal; debe escapar de un carácter específico (como \\d, \\n, \\\\).\n4. Las propiedades Unicode necesitan la bandera u: \\p{L}, \\p{Script=Han} y escapes de propiedades Unicode similares arrojan errores sin la bandera u habilitada. Haga clic en el botón u para habilitarlo.
Estos son tokens de referencia de reemplazo definidos por String.prototype.replace() de JavaScript:\n\n- $1, $2, ..., $99: hace referencia al contenido capturado por el enésimo grupo de captura (...)\n- $&: el texto coincidente completo\n- $`: el texto antes del match\n- $': el texto después de la coincidencia \n- ${name}: el contenido capturado por el grupo con nombre (?<name>...)\n\nPor ejemplo, patrón (\\w+)\\s(\\w+) que coincide con "hola mundo" con reemplazo $2-$1 produce "mundo-hola". Para incluir un $ literal en el reemplazo, use $$ para escaparlo.
Los tiempos de espera casi siempre se deben a un "retroceso catastrófico". Cuando el motor de expresiones regulares encuentra cuantificadores anidados (como (a+)+b) o rutas opcionales superpuestas, retrocede a través de un número exponencial de combinaciones, lo que hace que el tiempo de coincidencia explote.\n\nPatrones peligrosos típicos: (a+)+, (.*?)*, (.+)+$, etc. Soluciones:\n1. Reemplazar . con clases de caracteres precisas, p. [^\\s]+ en lugar de .+\n2. Evite cuantificadores anidados: cambie (a+)+ a a+\n3. Reduzca las rutas opcionales superpuestas: cambie (a|ab)+ a a+b?\n\nDespués de ajustar el patrón, haga clic en el botón "Reintentar" en el área de resultados de la coincidencia. La herramienta tiene una protección de tiempo de espera de 4 segundos y no congelará su navegador.
Los diferentes idiomas tienen diferencias en el motor de expresiones regulares en tres áreas principales:\n\n1. La compatibilidad con la sintaxis varía: JavaScript no admite patrones recursivos PCRE (?R), ramas condicionales (?(cond)yes|no) ni grupos atómicos (?>...). El módulo re de Python también carece de estos, pero su módulo regex los admite. Java admite grupos atómicos pero no recursividad.\n2. El manejo de Unicode difiere: Python 3 reprocesa \\w, \\d como Unicode de forma predeterminada; JavaScript usa ASCII de forma predeterminada; debe habilitar la bandera u manualmente. Esto significa que \\w no coincidirá con caracteres chinos y \\b los límites de palabras no se aplican entre caracteres CJK.\n3. La semántica de nueva línea difiere: la de Python. no coincide con \\n de forma predeterminada (igual que JavaScript), mientras que Pattern.DOTALL de Java se comporta igual que el indicador s de JavaScript.\n\nRecomendación: use esta herramienta para una verificación lógica rápida, luego realice la confirmación final con el motor de su idioma de destino.