1. Inicio
  2. Herramientas para desarrolladores
  3. Probador de regex

Probador de expresiones regulares (regex)

Escribe una expresión regular y un texto de prueba: verás las coincidencias resaltadas, los grupos de captura de cada una y el resultado de un reemplazo, todo en vivo con el motor de JavaScript.

Cómo usar el probador

  1. Escribe el patrón sin las barras delimitadoras. Si hay un error de sintaxis, lo verás al instante con el mensaje del motor.
  2. Marca las flags que necesites. Por defecto están g (todas las coincidencias) e i (ignora mayúsculas).
  3. Pega tu texto. Las coincidencias se resaltan y debajo aparece una tabla con la posición y los grupos de cada una, incluidos los grupos con nombre (?<nombre>…).
  4. Usa el campo Reemplazar por para probar sustituciones con $1, $<nombre> o $& (coincidencia completa).

El ejemplo cargado extrae usuario y dominio de los correos; fíjate en que pepe@localhost no coincide porque el patrón exige un punto en el dominio. Para extraer direcciones de un texto largo sin escribir regex, tienes el extractor de emails y el de URL. El texto no sale de tu navegador.

Chuleta de sintaxis

SintaxisSignificadoEjemplo
.Cualquier carácter salvo salto de línea (con s, también este)a.c → abc, a-c
\d \w \sDígito, carácter de palabra [A-Za-z0-9_], espacio en blanco\d{4} → 2026
\D \W \SLo contrario de los anteriores\S+ → palabra
[abc] [^abc] [a-z]Uno de la lista, ninguno de la lista, rango[aeiouáéíóú]
^ $Inicio y fin del texto (de cada línea con m)^\d+$
\bLímite de palabra\bsol\b no encaja en «soldado»
* + ?0 o más, 1 o más, 0 o 1colou?r
{n} {n,} {n,m}Exactamente n, al menos n, entre n y m\d{2,4}
*? +? ??Versiones perezosas (lo mínimo posible)<.+?>
(…)Grupo de captura ($1, $2…)(\d+)-(\d+)
(?<n>…)Grupo con nombre ($<n>)(?<año>\d{4})
(?:…)Grupo sin captura(?:https?|ftp)://
a|bAlternativagato|perro
(?=…) (?!…)Lookahead positivo y negativo\d+(?= €)
(?<=…) (?<!…)Lookbehind positivo y negativo(?<=\$)\d+
\1 \k<n>Referencia a un grupo anterior(\w)\1 → «ll», «rr»
\p{L}Cualquier letra Unicode (requiere u)\p{L}+ incluye ñ y tildes

Patrones útiles

ParaPatrón
Fecha dd/mm/aaaa\b(0?[1-9]|[12]\d|3[01])/(0?[1-9]|1[0-2])/(\d{4})\b
Hora 24 h\b([01]\d|2[0-3]):[0-5]\d\b
Código postal España (5 dígitos)\b(0[1-9]|[1-4]\d|5[0-2])\d{3}\b
Número decimal con coma o punto-?\d+(?:[.,]\d+)?
Espacios duplicados {2,}
Color hexadecimal#(?:[0-9a-f]{3}){1,2}\b
Palabras con tildes y ñ[\p{L}]+ (con flag u)

Una regex comprueba el formato, no la validez: 31/02/2026 pasa el patrón de fecha aunque no exista. Para documentos con dígito de control (DNI, IBAN, CURP…) usa los validadores específicos, como el de IBAN.

Diferencias entre lenguajes

  • Escapes en cadenas: en el código fuente, \d se escribe "\\d" en Java, C# (sin @) o en new RegExp("…") de JavaScript. Si necesitas convertir un patrón a cadena literal, usa escapar cadenas.
  • Python usa (?P<nombre>…) para grupos con nombre y \g<nombre> en el reemplazo; JavaScript usa (?<nombre>…) y $<nombre>.
  • PHP (PCRE) admite modificadores en línea como (?i) y grupos atómicos, que JavaScript no tiene.
  • Bases de datos: MySQL 8 y PostgreSQL tienen REGEXP / ~ con dialectos propios; prueba allí los patrones avanzados.

Si solo necesitas sustituir un texto fijo en muchas líneas, la herramienta de buscar y reemplazar es más directa.

Preguntas frecuentes

¿Qué motor de expresiones regulares usa?

El de JavaScript (ECMAScript) de tu navegador. Es muy parecido a PCRE (PHP) y al de Python, pero hay diferencias: por ejemplo, no admite modificadores en línea como (?i) ni grupos atómicos.

¿Por qué mi regex solo encuentra la primera coincidencia?

Porque falta la flag g (global). Sin ella, JavaScript se detiene en la primera coincidencia y el reemplazo solo cambia la primera aparición.

¿Cómo busco un punto o un paréntesis literal?

Escápalo con barra invertida: \., \(, \?. Los caracteres especiales son . ^ $ * + ? ( ) [ ] { } | \ y /.

¿Cómo hago que ^ y $ funcionen en cada línea?

Activa la flag m (multilínea). Sin ella, ^ y $ solo coinciden con el principio y el final de todo el texto.

¿Por qué la página se queda colgada con algunas expresiones?

Patrones como (a+)+$ provocan «backtracking catastrófico»: el tiempo crece exponencialmente con la longitud del texto. Evita cuantificadores anidados sobre lo mismo.