Regex Tester (JavaScript)

¿Qué es regex?

Regex — abreviatura de expresión regular, también escrita regexp — es un lenguaje de patrones compacto para buscar, encontrar y extraer texto. En vez de buscar una cadena exacta, un regex describe una forma (por ejemplo, "tres dígitos, luego un guion, luego cuatro dígitos") que puede coincidir con muchas entradas distintas a la vez. La sintaxis principal — clases de caracteres, cuantificadores, grupos — se comparte ampliamente entre lenguajes: JavaScript, Python, Java, grep, y la mayoría de los demás se basan en las mismas ideas, con algunas diferencias en los detalles (ver las preguntas frecuentes abajo).

Flags de regex comunes

Hoja de referencia de regex

PatrónCoincide con
.Cualquier carácter excepto salto de línea
\d / \DUn dígito / cualquier cosa que no sea un dígito
\w / \WUn carácter de palabra (letra, dígito, guion bajo) / cualquier cosa que no lo sea
\s / \SEspacio en blanco / cualquier cosa que no sea espacio en blanco
\bUn límite de palabra
^ / $Inicio / fin de la cadena (o línea, con el flag m)
* / + / ?Cero o más / uno o más / cero o uno del token anterior
{n} / {n,} / {n,m}Exactamente n / n o más / entre n y m repeticiones
[abc] / [^abc]Cualquiera entre a, b, c / cualquier carácter excepto a, b, c
[a-z]Cualquier carácter en el rango de a a z
(...)Grupo de captura — recuerda lo que coincidió
(?:...)Grupo sin captura — agrupa sin recordar
(?<name>...)Grupo de captura con nombre
|Alternancia — coincide con lo que haya a cualquier lado
(?=...) / (?!...)Lookahead positivo / negativo
(?<=...) / (?<!...)Lookbehind positivo / negativo

Ejemplos de patrones comunes

Lo que quieres hacer coincidirPatrón
Una dirección de correo (simple)[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
Un número, con decimales opcionales-?\d+(\.\d+)?
Un monto en dólares como $1,234.56\$[\d,]+(\.\d{2})?
Un número de teléfono de EE. UU.\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
Una URL (simple)https?://[^\s]+
Un código de color hex#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})

Estos están deliberadamente simplificados — un patrón de correo o URL totalmente conforme a la especificación es mucho más largo y rara vez vale la pena en la práctica. Pega cualquiera de estos en el campo de patrón de arriba y pruébalos contra texto real.

Preguntas frecuentes

¿Esta herramienta envía mi patrón o texto a un servidor?

No — la coincidencia se ejecuta completamente en tu navegador usando el motor RegExp nativo de JavaScript. No se envía nada a ningún lado.

¿Por qué algunos patrones se ejecutan lento o congelan la página?

Ciertos patrones — especialmente los que tienen cuantificadores anidados como (a+)+ — pueden mostrar "backtracking catastrófico" contra una entrada específica, donde el tiempo de coincidencia crece exponencialmente con la longitud de la entrada. Como esto se ejecuta en tu propia pestaña del navegador, un patrón lento solo afecta tu sesión; prueba con un texto de prueba más corto o un patrón menos ambiguo si se congela.

¿Esto prueba regex de Python, Java o grep?

No — esta herramienta usa el motor RegExp nativo de JavaScript (sintaxis ECMAScript), ya que se ejecuta completamente en tu navegador. Python (re), Java (java.util.regex), y grep (POSIX/PCRE) usan cada uno su propio motor de regex. La sintaxis principal se comparte en gran parte — clases de caracteres, cuantificadores, grupos — pero hay diferencias reales: Python soporta flags en línea como (?i) que JavaScript no soporta, el soporte de lookbehind varía según el motor y la versión, y las reglas de escape difieren ligeramente. Un patrón que funciona aquí normalmente necesitará pequeños ajustes para funcionar en otro lado.

¿Esto es lo mismo que un generador o constructor de regex?

No exactamente. Un generador de regex intenta escribir un patrón por ti a partir de un ejemplo o una descripción en lenguaje simple; un constructor de regex suele ser una interfaz visual, de armar haciendo clic, para construir uno. Esta herramienta asume que ya tienes un patrón — o estás iterando sobre uno — y te permite probarlo en vivo contra texto real: un probador de regex, no un escritor de regex.