Qué es una expresión regular
Una expresión regular (regex) es un patrón de texto: una fórmula compacta que describe “qué forma” tiene lo que buscas. Con una sola línea puedes validar un formulario, extraer fechas de un log o reemplazar miles de ocurrencias en un editor. Este probador usa el motor real de JavaScript de tu navegador, así que lo que funcione aquí funcionará igual en tu código.
Cómo usar el probador
- Escribe el patrón sin barras: para probar
/\d+/gsolo escribe\d+. - Marca los flags que necesites;
g(global) viene activado porque es lo habitual. - Pega el texto de prueba (hasta 50,000 caracteres).
- Los resultados se actualizan en vivo: contador, texto resaltado y lista con índice, valor y grupos de captura de cada coincidencia.
- Si el patrón es inválido verás el error de sintaxis; Copiar regex te lleva la expresión lista para tu código.
Sintaxis esencial
| Token | Significado |
|---|---|
. | cualquier carácter, excepto salto de línea |
* | cero o más repeticiones |
+ | una o más repeticiones |
? | cero o una repetición (o vuelve lazy al cuantificador anterior) |
\d | un dígito 0-9 |
\w | letra, dígito o guion bajo |
\s | espacio en blanco: espacio, tab o salto de línea |
^ | inicio del texto (o de la línea con flag m) |
$ | fin del texto (o de la línea con flag m) |
[abc] | un carácter del conjunto; [^abc] lo niega |
(...) | grupo de captura |
{n,m} | entre n y m repeticiones, por ejemplo \d{2,4} |
Ejemplo resuelto
Validemos un email simple con ^[^\s@]+@[^\s@]+\.[^\s@]+$. Leído por partes: ^ ancla al inicio; [^\s@]+ exige uno o más caracteres que no sean espacio ni arroba; @ es la arroba literal; después otro bloque igual, un punto escapado \. y la terminación; $ ancla al final. Resultados reales del motor de JavaScript:
| Texto | ¿Coincide? |
|---|---|
ana.perez@gmail.com | sí |
soporte@empresa.do | sí |
hola@sitio | no: falta el punto y la terminación |
dos@@correo.com | no: la segunda arroba rompe el patrón |
maria lopez@gmail.com | no: contiene un espacio |
Los flags explicados
g(global): encuentra todas las coincidencias, no solo la primera.i(insensitive): ignora mayúsculas y minúsculas,anacoincide conANA.m(multiline):^y$funcionan línea por línea, no solo al inicio y fin del texto.s(dotAll): el punto.también coincide con saltos de línea.u(unicode): trata el texto por puntos de código, necesario para emojis y\p{L}.
El sabor JavaScript
Cada lenguaje tiene su dialecto de regex. El de JavaScript moderno ya soporta lookbehind — (?<=\$)\d+ captura 45 en $45 sin incluir el símbolo — y grupos con nombre. Por ejemplo, (?<dia>\d{2})/(?<mes>\d{2})/(?<anio>\d{4}) aplicado a Entrega: 07/07/2026 coincide en el índice 9 y entrega los grupos dia = 07, mes = 07 y anio = 2026, mucho más legibles que $1, $2 y $3.
Preguntas frecuentes
¿Por qué mi regex no encuentra nada?
Las dos causas más comunes: olvidaste el flag g (sin él solo se reporta la primera coincidencia) o no escapaste un carácter especial. Buscar 3.14 sin escapar encuentra también 3514, porque . significa cualquier carácter; un ( o + sin escapar vuelve el patrón inválido. Escríbelos como \., \( y \+.
¿Cómo valido un email o un teléfono?
Para email usa un patrón permisivo como el del ejemplo resuelto. Ten en cuenta que el email perfecto por regex no existe: el estándar RFC 5322 admite casos imposibles de cubrir, así que valida la forma general y confirma con un correo real. Para un teléfono dominicano de 10 dígitos sirve ^\d{3}-\d{3}-\d{4}$ si esperas guiones, o ^\d{10}$ si solo dígitos.
¿Qué significa greedy vs lazy?
Los cuantificadores son “codiciosos” (greedy) por defecto: toman lo máximo posible. Sobre <b>hola</b> y <i>adios</i>, el patrón <.+> devuelve la cadena completa, porque .+ se estira hasta el último >. Agregando ? se vuelve “perezoso” (lazy): <.+?> con flag g devuelve <b>, </b>, <i> y </i>, tomando lo mínimo cada vez.
¿En qué se diferencia esta herramienta de regex101?
regex101 es excelente y ofrece varios sabores (PCRE, Python, Go) con depurador paso a paso. Este probador se enfoca en el sabor JavaScript y corre 100% en tu navegador: ni el patrón ni el texto salen de tu dispositivo, ideal para logs o datos de clientes que no deberías pegar en sitios de terceros.