Saltar al contenido

Probador de regex JavaScript

Prueba el patrón y revisa coincidencias o reemplazos. La ayuda de IA opcional envía descripción, patrón e indicadores a DeepSeek tras tu confirmación.

Asistente IA · opcional

Crea y depura una regex a partir de tu intención

Describe la regla de coincidencia o revisa el patrón actual. El texto de prueba permanece en tu navegador.

API de DeepSeek
1 · Objetivo
Patrón actual —
Datos enviados: Solo se envían a DeepSeek esta descripción, la regex actual y sus flags. El texto del probador nunca se incluye. Detalles de privacidad
2 · Patrón sugerido
Aquí aparecerán el patrón sugerido, la explicación y las pruebas sintéticas. No se envía nada hasta que lo confirmes.
Expresión regular
Sustituir por

Cómo probar una expresión regular de JavaScript

El probador ejecuta un patrón sobre el texto de ejemplo con el mismo motor que usa tu navegador, así que lo que coincide aquí coincide también en tu aplicación. Además de la lista de coincidencias ves los indicadores activos, los grupos de captura y una previsualización de la sustitución.

Los patrones son de JavaScript (ECMAScript), no de PCRE ni de Python. Los dialectos se solapan mucho, pero no del todo, y esa es la causa más frecuente de que un patrón que funciona en otro sitio falle aquí. Los patrones preparados para correo, URL, IPv4, UUID, fecha, hora, color hexadecimal y números están a un clic.

  1. Pega el texto que quieres analizar en el campo de texto de ejemplo.
  2. Escribe el patrón sin delimitadores ni indicadores —la página los añade— o elige un patrón rápido y edítalo.
  3. Marca los indicadores que necesites: búsqueda global, ignorar mayúsculas y minúsculas, multilínea, el punto incluye saltos de línea o modo Unicode.
  4. Lee la lista de coincidencias: cada entrada muestra el texto encontrado, su posición (desde 0) y los grupos de captura, que es como se ve por qué un grupo sale vacío.
  5. Escribe el texto de sustitución para ver el reemplazo antes de llevarlo a tu código; sin búsqueda global solo cambia la primera coincidencia.

Detalles de las expresiones regulares de JavaScript

Qué dialecto de expresiones regulares es este

Es ECMAScript. Los grupos con nombre (?<nombre>...), las aserciones de retroceso (?<=...) y (?<!...) y las clases Unicode como \p{Letter} con el indicador u funcionan en los navegadores actuales. Los cuantificadores posesivos, los grupos atómicos, la recursión, los anclajes \A y \Z y los modificadores en línea como (?i) no existen en este lenguaje.

Esas diferencias rompen los patrones escritos para Python, PHP o Java: (?P<nombre>...) se escribe aquí (?<nombre>...), \Z se sustituye por $ y los modificadores salen del patrón a las casillas. Con esos tres cambios se resuelve la mayoría de los casos reales.

Qué cambia cada indicador

La búsqueda global devuelve todas las coincidencias en lugar de detenerse en la primera, y es también lo que hace que una sustitución se aplique a todo el texto y no solo al primer acierto. Ignorar mayúsculas y minúsculas hace que las letras coincidan en cualquier combinación. Multilínea permite que ^ y $ coincidan en los saltos de línea internos, no solo al principio y al final de la cadena.

El punto incluye saltos de línea deja que un punto consuma el salto, lo que se necesita para buscar un bloque completo de texto. El modo Unicode pasa a semántica de puntos de código: un punto coincide con el emoji entero y no con la mitad, y habilita las clases \p{...}.

Coincidencias, grupos y sustituciones

Los grupos de captura se numeran por el orden en que se abren sus paréntesis; un grupo sin captura (?:...) no ocupa número, útil cuando solo quieres agrupar una alternancia. Los grupos con nombre se referencian en la sustitución como $<nombre>, mucho más legible que $3 cuando el patrón crece.

En el texto de sustitución, $1 a $99 insertan grupos capturados, $& inserta la coincidencia completa y $$ inserta un dólar literal. Ojo con los cuantificadores anidados como (a+)+ sobre entradas largas que casi coinciden: pueden explorar un número exponencial de caminos y colgar la página.

Dudas sobre las coincidencias y las sustituciones

¿Se sube a algún servidor el texto que pruebo?

No. Las coincidencias y las sustituciones se calculan en tu navegador con el motor de JavaScript, y los botones de la herramienta no hacen ninguna petición de red. La única excepción es el panel de IA opcional: tras marcar la casilla de consentimiento envía a DeepSeek solo la descripción que escribes, el patrón actual y sus indicadores, nunca el texto de ejemplo.

¿Por qué mi patrón funciona en Python o en PHP pero aquí no?

Porque el dialecto es distinto. Python escribe los grupos con nombre como (?P<nombre>...) y admite \Z; Java y PCRE tienen cuantificadores posesivos y grupos atómicos; PHP permite modificadores como (?i). ECMAScript no incluye nada de eso, así que el patrón hay que traducirlo en lugar de copiarlo.

¿Por qué solo se sustituye la primera coincidencia?

Porque la búsqueda global está desactivada. Sin ese indicador la sustitución se detiene en el primer acierto, igual que String.prototype.replace con un patrón no global; para reemplazar todo el texto hay que marcar la casilla Global.

¿Qué hace exactamente cada indicador?

Global: todas las coincidencias y todos los reemplazos, no solo el primero. Ignorar mayúsculas: las letras coinciden en cualquier caja. Multilínea: ^ y $ también coinciden en los saltos de línea internos. El punto incluye saltos de línea: un punto puede consumir un salto. Unicode: semántica de puntos de código, un emoji cuenta como un solo carácter y se habilitan las clases \p{...}.

¿Cómo se leen las posiciones y los grupos de la lista?

La posición es el índice donde empieza la coincidencia y se cuenta desde 0. Los grupos de captura se listan numerados ($1, $2...) y entre comillas, y un grupo con nombre aparece además con su nombre. Si un grupo opcional no participa en la coincidencia se muestra vacío, que es justo lo que se necesita para depurar el patrón.

¿Qué puedo escribir en el campo de sustitución?

$1 a $99 insertan el grupo correspondiente, $& inserta toda la coincidencia, $<nombre> inserta un grupo con nombre y $$ inserta un dólar literal. Recuerda que, igual que en JavaScript, sin la casilla Global solo se sustituye la primera coincidencia.

Herramientas recientes: