T

Text Machine

Potentes herramientas de texto, en tu navegador

Probador de Regex

Crea y prueba expresiones regulares sobre tu propio texto en tiempo real. Visualiza cada coincidencia resaltada, inspecciona los grupos de captura y previsualiza los reemplazos, todo en tu navegador.

Expresión regular

/

/g

Flags

Cadena de prueba
Reemplazar con

Consejo: activa el flag g para reemplazar todas las coincidencias en lugar de solo la primera.

Cómo usar Probador de Regex

  1. 1

    Escribe tu patrón

    Escribe una expresión regular en el campo de patrón y luego activa o desactiva los flags (g, i, m y más) para controlar con exactitud cómo funciona la coincidencia.

  2. 2

    Añade tu texto de prueba

    Pega el texto en el que quieres buscar en el campo «Cadena de prueba». Las coincidencias se resaltan al instante a medida que escribes o editas el patrón.

  3. 3

    Inspecciona las coincidencias

    Revisa cada coincidencia, su posición en el texto y los grupos de captura o con nombre en la lista de resultados para confirmar que el patrón se comporta como esperas.

  4. 4

    Reemplaza o copia

    Introduce un reemplazo para previsualizar las sustituciones con retrorreferencias del tipo $1 y luego copia el resultado directamente en tu código o documento.

Las expresiones regulares en la práctica: guía de campo para desarrolladores

Qué describe realmente una regex

Una expresión regular es un pequeño lenguaje de patrones para describir conjuntos de cadenas. En lugar de preguntar si un texto es igual a un valor fijo, describes su forma —una secuencia de dígitos, una palabra seguida de una arroba y un dominio, tres letras y luego un guion— y el motor recorre tu texto en busca de cada subcadena que encaje. Esa única idea impulsa la validación, la búsqueda y reemplazo, el análisis de registros, la tokenización y la extracción de datos en casi todos los lenguajes y editores.

Este probador usa el motor de JavaScript (ECMAScript) integrado en tu navegador, el mismo que utilizan Node.js y las aplicaciones web. Así, un patrón que coincide aquí se comporta de forma idéntica en el código de tu aplicación, lo que lo convierte en un entorno de pruebas fiel para crear y depurar un patrón antes de pegarlo en un proyecto.

Clases de caracteres y los bloques de construcción

La mayor parte de un patrón son simplemente caracteres literales que coinciden consigo mismos, intercalados con un puñado de tokens especiales. Una clase de caracteres entre corchetes coincide con un solo carácter de un conjunto: un rango de letras minúsculas, un conjunto de vocales o un dígito. La abreviatura barra invertida-d coincide con un dígito, barra invertida-w coincide con un carácter de palabra (letras, dígitos, guion bajo), barra invertida-s coincide con un espacio en blanco y el punto coincide con cualquier carácter salvo un salto de línea. Pon la abreviatura en mayúscula para invertirla: barra invertida-D es cualquier carácter que no sea un dígito.

Estos son los átomos que combinas para formar todo lo demás. Un patrón para un color hexadecimal, por ejemplo, es un ancla para el signo de almohadilla seguida de una clase de caracteres de dígitos hexadecimales repetida; un patrón para una palabra es, sencillamente, barra invertida-w repetida una o más veces. Construye los patrones a partir de estas piezas pequeñas en lugar de recurrir a una única expresión gigantesca.

Anclas, cuantificadores y alternancia

Las anclas coinciden con posiciones en lugar de con caracteres. El acento circunflejo coincide con el inicio de la cadena (o con el inicio de una línea con el flag de multilínea) y el signo de dólar coincide con el final; el token de límite de palabra barra invertida-b coincide con el borde entre un carácter de palabra y un carácter que no lo es, que es la forma de hacer coincidir una palabra entera sin atraparla dentro de otra más larga. Los cuantificadores controlan la repetición: el signo más significa una o más veces, el asterisco significa cero o más veces y el signo de interrogación significa opcional. También puedes especificar un número exacto o un rango usando la forma con llaves cuando necesites, por ejemplo, un valor que se repita de dos a cuatro veces.

La alternancia con el símbolo de barra vertical significa «o»: un patrón de cat o dog coincide con cualquiera de las dos palabras. Envuelve las alternativas entre paréntesis para acotar la elección. Por defecto, los cuantificadores son voraces y atrapan todo lo que pueden; añade un signo de interrogación después de un cuantificador para hacerlo perezoso y que coincida con lo menos posible, que es la solución habitual cuando un patrón pensado para capturar una etiqueta se traga todo hasta la última de la línea.

Grupos de captura y cómo usarlos

Los paréntesis cumplen una doble función: agrupan parte de un patrón y capturan aquello con lo que esa parte coincidió. Tras una coincidencia, las piezas capturadas quedan disponibles como grupos numerados —el primer par de paréntesis es el grupo uno, el siguiente es el grupo dos— y la lista de resultados de aquí muestra cada uno para que confirmes que estás extrayendo exactamente el fragmento que pretendes. Un patrón para una cadena con forma de correo electrónico, con paréntesis distintos alrededor de la parte local, el dominio y la extensión, te permite leer esas tres piezas por separado.

Los grupos con nombre, escritos con la sintaxis que coloca un nombre entre corchetes angulares justo después del paréntesis de apertura, dan a esas capturas etiquetas legibles en lugar de meros números y aparecen en su propia sección. Cuando solo quieres agrupar sin la carga de la captura, un grupo sin captura —un paréntesis de apertura seguido de un signo de interrogación y dos puntos— mantiene limpia la numeración de tus grupos. Esas capturas son también lo que referencia tu paso de reemplazo.

Los flags cambian toda la coincidencia

Los flags son modificadores que alteran la forma en que se aplica todo el patrón. Global encuentra todas las coincidencias en lugar de detenerse en la primera, lo que resulta esencial para reemplazar todas las apariciones y no solo una. Ignorar mayúsculas y minúsculas hace que las letras coincidan sin importar su capitalización. Multilínea redefine las anclas de acento circunflejo y de dólar para que coincidan en cada salto de línea en vez de solo al principio y al final de la entrada.

Los flags restantes son situacionales, pero importantes. Dotall permite que el punto coincida también con los caracteres de salto de línea, de modo que un patrón pueda abarcar varias líneas. Unicode activa el tratamiento completo de Unicode para los puntos de código que están más allá del rango básico y para los escapes de propiedad Unicode. Sticky ancla cada coincidencia a la posición justo después de la anterior, que es la forma en que los tokenizadores avanzan por la entrada sin saltarse nada. Activa y desactiva los flags aquí y observa cómo cambian las coincidencias resaltadas para desarrollar intuición sobre cada uno.

Patrones que escribirás constantemente

Unas cuantas formas aparecen una y otra vez. Sacar todos los enteros de un bloque de texto es barra invertida-d repetida una o más veces con el flag global. Una comprobación aproximada de correo electrónico es uno o más caracteres de palabra, una arroba, uno o más caracteres de palabra, un punto literal y una breve serie de letras: suficiente para un filtro rápido de cordura, aunque deliberadamente laxo. Recortar o colapsar series de espacios en blanco, validar un slug de letras minúsculas y guiones, y extraer el contenido entre dos marcadores son todas tareas del día a día.

Resiste la tentación de validar formatos verdaderamente complejos con un único patrón monstruoso. Las gramáticas de correo electrónico y de URL, en particular, son tristemente célebres por lo difícil que es capturarlas por completo en una regex; para esos casos, un patrón laxo más un analizador de verdad o una biblioteca específica suele ser mejor que una expresión ilegible que te dará miedo tocar dentro de seis meses.

Retroceso catastrófico y cómo evitarlo

El retroceso del motor es lo que hace potente a una regex, pero también puede hacer que un patrón explote. Cuando dos partes cuantificadas de un patrón pueden coincidir con los mismos caracteres de muchas maneras superpuestas —un ejemplo clásico es un grupo que a su vez se repite, donde la repetición interna y la externa compiten—, el motor puede llegar a probar un número astronómico de combinaciones contra una cadena que, al final, no coincide. En una entrada larga esto puede bloquearse durante segundos o colgarse por completo, y en un servidor se convierte en un vector de denegación de servicio conocido como ReDoS.

Las defensas son estructurales. Evita anidar un cuantificador dentro de otro que pueda coincidir con lo mismo, prefiere clases de caracteres más específicas a un punto permisivo para que cada paso tenga una sola forma de consumir la entrada, y ancla el patrón cuando puedas. Si tienes que probar un patrón arriesgado, hazlo aquí primero contra una cadena realista del peor caso posible, donde un patrón desbocado te cuesta una pestaña del navegador en lugar de una caída en producción.

Cómo previsualizar los reemplazos con seguridad

La búsqueda y reemplazo es donde una regex demuestra su valor a diario, y el campo de reemplazo te permite previsualizar el resultado antes de aplicarlo en ningún sitio. Referencia tus grupos de captura en el reemplazo con un signo de dólar y el número de grupo —dólar-uno inserta aquello con lo que coincidió el primer grupo—, de modo que puedas reordenar una fecha, dar nuevo formato a un nombre o envolver las coincidencias en marcado. Recuerda que, sin el flag global, solo se reemplaza la primera coincidencia; activa global para transformar todas las apariciones.

Todo se ejecuta localmente en tu navegador usando el motor nativo, así que nada de lo que pegues —líneas de registro, código fuente, datos de clientes— se sube, se registra ni se almacena. Eso convierte al probador en un lugar seguro para iterar sobre una muestra del mundo real hasta que tanto las coincidencias como el resultado del reemplazo sean exactamente correctos, y luego copiar el patrón terminado en tu código con confianza.

Preguntas frecuentes

¿Qué es una expresión regular?
Una expresión regular, o regex, es un patrón compacto que sirve para buscar, encontrar coincidencias y transformar texto. Los desarrolladores las utilizan para validar entradas, hacer búsquedas y reemplazos, analizar y extraer datos en casi todos los lenguajes de programación y editores de texto.
¿Qué variante de regex usa este probador?
Esta herramienta usa el motor de expresiones regulares de JavaScript (ECMAScript) integrado en tu navegador, el mismo que utilizan Node.js y las aplicaciones web modernas. Los patrones y los flags se comportan exactamente igual que en tu propio código JavaScript.
¿Qué significan los flags?
g (global) encuentra todas las coincidencias en lugar de detenerse en la primera; i ignora mayúsculas y minúsculas; m hace que ^ y $ coincidan en los saltos de línea; s permite que el punto coincida con los caracteres de salto de línea; u habilita el tratamiento completo de Unicode; mientras que y (sticky) ancla la coincidencia a una posición específica del texto.
¿Cómo funcionan los grupos de captura?
Los paréntesis de tu patrón crean grupos de captura que extraen partes de cada coincidencia. Los grupos numerados se referencian como $1, $2, etc., mientras que los grupos con nombre, escritos como (?<nombre>…), se muestran por separado, de modo que puedes extraer exactamente los datos que necesitas.
¿Se envían mis datos a un servidor?
No. Cada coincidencia y cada reemplazo se ejecutan íntegramente en tu navegador usando su motor de regex nativo. Nada de lo que escribes se sube, registra ni almacena, por lo que el probador funciona sin conexión y mantiene tu texto completamente privado.

Herramientas relacionadas

Sigue trabajando con estas prácticas herramientas

Conversor de HTML a Texto

Formateador de JSON

Decodificador de JWT

Generador de Gradientes CSS

Generador de Sombras CSS

Convertidor de Texto a HTML