Saltar al contenido

Probador de expresiones regulares

Regex Tester

Prueba una expresión regular sobre un texto de ejemplo resaltando las coincidencias en vivo y listando los grupos de captura.

Ejecuta una expresión regular contra un texto de ejemplo y muestra cada coincidencia con sus desplazamientos, sus grupos de captura y el reemplazo que produciría. Es el motor del propio navegador, así que lo que ocurre aquí es lo que ocurrirá en tu JavaScript.

🔒 Se ejecuta por completo en tu navegadorregextestpattern
Vista

Patrón

//g

puede coincidir en cualquier punto de la cadena, 2 grupos de captura.

Probar contra

Se listan todas las coincidencias. Sin la bandera `g`, `String.replace` solo usa la primera.

0 coincidencias

Tiempo

0,0 ms

ask@example.com, 문의@example.co.kr and no-reply+tag@mail.example.org

Reemplazar

`$1`, `$<name>`, `$&`, `` $` ``, `$'` y `$$` se expanden todos, exactamente como los expande `String.replace`.

Cómo se usa

  1. Escribe el patrón y ajusta los flags

    Los botones de flags son los seis que importan: global, ignorar mayúsculas, multilínea, dotAll, unicode y sticky. El literal de arriba es lo que pegarías en el código.

  2. Pega texto que tengas de verdad

    Las coincidencias se resaltan en el sitio, alternando el color para que las adyacentes se distingan, y se listan en una tabla con el valor de cada grupo, incluidos los grupos que no participaron.

  3. Prueba el reemplazo

    `$1`, `$<name>`, `$&`, `` $` ``, `$'` y `$$` se expanden todos exactamente como los expande `String.replace`, así que la vista previa es la salida real.

Preguntas frecuentes

¿Por qué la página avisa de que falta el flag `g`?

Porque la lista muestra todas las coincidencias, pero sin `g` tu código no lo hará. `String.replace` cambia solo la primera, y `matchAll` lanza un error directamente. Es la diferencia entre lo que ves aquí y lo que hace tu programa.

¿Es el mismo motor que Python o PCRE?

No: es el de JavaScript. El lookbehind, los grupos con nombre y `\p{…}` se admiten aquí, pero los grupos atómicos, los cuantificadores posesivos, la recursión y los grupos de flags en línea no, y el comportamiento de las clases de caracteres difiere en algunos puntos. Un patrón que funciona aquí puede fallar en otro sitio.

Mi patrón cuelga la página.

No debería: la coincidencia corre en un worker precisamente porque un patrón con retroceso catastrófico no puede interrumpirse de ninguna otra forma. Si tarda demasiado, la ejecución se termina y se informa, lo cual es además una señal útil: un patrón que hace eso aquí lo hará en tu servidor.

¿Por qué `.` no coincide con mi salto de línea?

Porque para eso está `s` (dotAll). Sin él `.` coincide con cualquier cosa excepto un terminador de línea, y `m` (multilínea) es otra cosa distinta: cambia lo que significan `^` y `$`, no lo que coincide con `.`.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.