Probador de expresiones regulares

Introduce un patrón de expresión regular y una cadena de prueba para resaltar las coincidencias y listar los valores de los grupos de captura. Compatible con los indicadores g/i/m/s/u usando el RegExp nativo de JavaScript.

Patrones de expresiones regulares habituales

Uso Patrón Descripción
Dirección de correo electrónico ^[\w.+-]+@[\w-]+\.[\w.-]+$ Coincide con un formato simplificado de correo electrónico compuesto por un nombre de usuario y un dominio separados por @ (no es totalmente conforme a RFC).
Teléfono en España ^[679]\d{8}$ Coincide con números de teléfono móvil o fijo de España de 9 dígitos que empiezan por 6, 7 o 9.
URL https?:\/\/[\w.-]+(?:\/[\w\-./?%&=]*)? Extrae cadenas de URL que empiezan por http:// o https://, incluyendo la ruta y los parámetros de consulta.
Código postal ^\d{5}$ Coincide con un código postal de 5 dígitos, como el usado en España.
Código de color hexadecimal ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$ Coincide con colores hexadecimales de CSS en formato completo #RRGGBB o abreviado #RGB.
Solo dígitos ^[0-9]+$ Comprueba si toda la cadena está formada únicamente por dígitos (0-9).

Qué es un probador de expresiones regulares

Una expresión regular (regex) es un minilenguaje compacto para buscar, extraer y validar patrones dentro de un texto. Tareas como «comprobar si esto parece una dirección de correo válida» o «extraer solo las direcciones IP de un archivo de registro» pueden expresarse con un único patrón. El inconveniente es que la sintaxis es densa y llena de símbolos, por lo que resulta realmente difícil saber, con solo leer el patrón, si se comportará como se pretende.

Esta herramienta evalúa en tiempo real el patrón y la cadena de prueba que escribes usando el motor RegExp nativo de JavaScript, y resalta en amarillo cada coincidencia directamente sobre el texto. Además, lista el valor de cada grupo de captura, el número total de coincidencias y cualquier error de sintaxis, de modo que puedes iterar sobre un patrón —ajustarlo, ver qué cambia, ajustarlo de nuevo— completamente dentro del navegador, sin escribir código ni preparar un entorno de ejecución.

Como todo se ejecuta en el propio navegador con el mismo motor que utilizan las expresiones regulares en JavaScript del lado del cliente, los validadores de formularios y los backends en Node.js, lo que ves aquí es una vista previa fiel de cómo se comportará el patrón una vez que lo lleves a producción. Es una forma rápida de comprobar un patrón complicado antes de pegarlo en código real.

Cómo usar el probador de expresiones regulares

  1. Escribe tu patrón de expresión regular Introduce el patrón que quieres probar en el campo superior. Las barras que lo rodean / / se añaden automáticamente, así que solo tienes que escribir el cuerpo del patrón.
  2. Elige los indicadores que necesitas Activa las casillas g, i, m, s y u según lo necesites. Deja activado el indicador g si quieres ver todas las coincidencias en lugar de solo la primera.
  3. Pega una cadena de prueba Pega o escribe el texto con el que quieres comprobar coincidencias en el área de texto de abajo. Se admite perfectamente el texto con varias líneas.
  4. Revisa el resaltado y la tabla El resultado se recalcula automáticamente mientras escribes. Las subcadenas coincidentes se resaltan en amarillo, y la tabla inferior muestra la coincidencia completa y el valor de cada grupo de captura para cada aparición.
  5. Ajusta el patrón Si el número de coincidencias o el rango encontrado no es el esperado, modifica directamente el patrón o los indicadores y observa cómo cambia el resultado resaltado.

Consejos para aprovecharla mejor

  • El /indicadores que aparece junto al campo del patrón te permite ver de un vistazo qué combinación de indicadores está activa en cada momento.
  • Solo cuentan como grupos de captura las partes entre (). Usa un grupo no capturante (?:...) si solo necesitas agrupar una condición sin que aparezca en la lista de grupos.
  • Sin el indicador g solo se encuentra la primera coincidencia. Actívalo si quieres contar todas las apariciones en el texto.
  • El botón "Insertar ejemplo" carga un caso de extracción de correos electrónicos, un buen punto de partida para entender cómo funcionan los grupos de captura.
  • Todo el procesamiento ocurre dentro de tu navegador: el patrón y la cadena de prueba que escribes nunca se envían a ningún servidor.

Casos de uso habituales de un probador de expresiones regulares

Diseñar reglas de validación de formularios

Verifica aquí una expresión regular antes de conectarla a un formulario: confirma que las entradas esperadas (con o sin guiones, con caracteres acentuados, etc.) pasan la validación y que las entradas incorrectas se rechazan correctamente.

Extraer campos de registros del servidor

Pega un fragmento real de un registro de acceso o de errores y construye un patrón que extraiga solo los campos que necesitas, como direcciones IP, marcas de tiempo o códigos de estado HTTP.

Limpiar datos de CSV o texto libre

Antes de normalizar números de teléfono o fechas con formatos inconsistentes, usa la herramienta para clasificar qué filas coinciden con un patrón determinado y cuáles no.

Comprobar el comportamiento durante una revisión de código

Cuando la expresión regular de un compañero es difícil de entender a simple vista, pega valores de ejemplo reales y visualiza exactamente qué coincide para resolver la duda al instante.

Detectar efectos secundarios al modificar un patrón

Al modificar una expresión regular existente, compara las coincidencias resaltadas antes y después del cambio sobre la misma cadena de prueba para confirmar que el comportamiento no varió de forma inesperada.

Glosario de expresiones regulares

Grupo de captura
Una parte del patrón encerrada entre (). Se usa cuando necesitas extraer una parte de la coincidencia general en lugar de toda la cadena coincidente. La tabla de resultados de esta herramienta lista el valor de cada grupo bajo Grupo 1, Grupo 2, y así sucesivamente.
Grupo no capturante
Un grupo escrito como (?:...). Se usa cuando solo necesitas paréntesis para agrupar una condición: mantiene limpia la numeración de tus verdaderos grupos de captura y facilita la lectura de la lista de resultados.
Referencia inversa
Una forma de reutilizar más adelante, dentro del mismo patrón, el texto que coincidió con un grupo de captura anterior. Los grupos numerados se referencian con \1, y los grupos con nombre con \k<nombre>. Se usa habitualmente para detectar palabras repetidas o tokens duplicados.
Coincidencia perezosa (no ávida)
Añadir ? justo después de un cuantificador (como * o +) hace que coincida con la menor cantidad de texto posible. Por defecto (coincidencia ávida), los cuantificadores intentan coincidir con la mayor cantidad posible, por lo que la distinción importa al extraer algo acotado, como el contenido de una sola etiqueta HTML.
Lookahead y lookbehind
Se refiere en conjunto a (?=...) (lookahead positivo), (?!...) (lookahead negativo), (?<=...) (lookbehind positivo) y (?<!...) (lookbehind negativo). Permiten exigir que exista cierto texto cerca sin incluir ese texto en la coincidencia en sí.
Clase de caracteres
Un conjunto de caracteres entre corchetes, como [abc] o [a-z0-9], que coincide con cualquier carácter individual dentro de él. Colocar ^ justo después del corchete de apertura, como en [^abc], la niega, indicando «cualquier carácter excepto estos».
Ancla
Un elemento que representa una posición en lugar de un carácter real. ^ ancla al inicio de la cadena (o de cada línea con el indicador m), $ al final, y \b a un límite de palabra.
Indicador
Una opción que cambia la forma en que se interpreta todo el patrón. Esta herramienta admite los cinco indicadores de JavaScript: g (encuentra todas las coincidencias), i (ignora mayúsculas y minúsculas), m (multilínea), s (permite que el punto coincida con saltos de línea) y u (gestión correcta de Unicode).

Preguntas frecuentes

Sin el indicador g (global), la expresión regular solo coincide con la primera aparición en la cadena, y las siguientes se ignoran. Activa el indicador g si quieres encontrar todas las coincidencias.

La sintaxis básica ([abc], \d, +, *, etc.) es en gran medida compartida, pero la sintaxis de los grupos con nombre, el soporte de lookahead/lookbehind y los indicadores disponibles varían sutilmente entre lenguajes. Esta herramienta sigue la especificación RegExp de JavaScript, por lo que no garantiza un comportamiento idéntico en otros lenguajes.

No. Todo el procesamiento ocurre en el JavaScript de tu navegador, y nada de lo que escribas se envía ni se almacena en los servidores de toolbase.cc.

Aparece cuando el constructor RegExp de JavaScript detecta un error de sintaxis, por ejemplo un paréntesis sin cerrar, un cuantificador (*, +, ?) sin nada delante o una clase de caracteres no válida. El mensaje de error suele dar una pista, así que revisa el equilibrio de paréntesis y el escape de caracteres especiales (como \. o \().
Tool-kun

A propósito — Qué ocurre dentro de un motor de expresiones regulares

Las expresiones regulares se remontan a la teoría de los "lenguajes regulares" propuesta por el matemático Stephen Kleene en la década de 1950. Herramientas tempranas de Unix como el editor de texto ed y el comando grep (abreviatura de "globally search a Regular Expression and Print") adoptaron esta teoría como implementación práctica, lo que explica su rápida difusión en las herramientas de procesamiento de texto. El propio nombre "grep" proviene de una operación de expresión regular, lo cual resulta bastante simbólico.

El motor RegExp de JavaScript realiza el emparejamiento internamente mediante una estrategia de "retroceso" (backtracking): prueba cada elemento del patrón en orden y, si una parte posterior falla, retrocede e intenta otra alternativa. Esta flexibilidad tiene una contrapartida: patrones como (a+)+b combinados con una cadena larga que no coincide pueden hacer que el número de intentos crezca exponencialmente, un fenómeno conocido como "retroceso catastrófico" que puede bloquear un navegador o un servidor. Prueba siempre los patrones complejos con entradas variadas antes de llevarlos a producción.

Un objeto de expresión regular con el indicador global (g) mantiene internamente un cursor llamado lastIndex, y cada llamada a exec() reanuda la búsqueda desde esa posición. Reutilizar el mismo objeto de expresión regular en búsquedas no relacionadas puede dejar este cursor en un estado inesperado, por lo que esta herramienta crea una instancia nueva de RegExp cada vez para evitar arrastrar ese estado residual.

Los grupos de captura con nombre ((?<nombre>...)) se añadieron en ECMAScript 2018 y son una característica relativamente reciente. Referirse a un grupo por su nombre en lugar de por su número mejora mucho la legibilidad de patrones complejos, algo especialmente útil al analizar fechas, donde importa saber qué representa cada grupo.