Tester de Expresiones Regulares

    Prueba y depura expresiones regulares con resaltado de coincidencias en tiempo real. Compatible con todos los flags de JavaScript.

    ¿Qué es una expresión regular?

    Una expresión regular (regex o regexp) es un patrón que describe un conjunto de cadenas de texto. Se usa para buscar, validar, extraer y transformar texto de forma eficiente. Por ejemplo, el patrón \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b con el flag i identifica direcciones de correo electrónico dentro de cualquier texto. Las expresiones regulares están disponibles en prácticamente todos los lenguajes de programación modernos: JavaScript, Python, Java, Go, Rust, PHP y muchos más.

    Esta herramienta utiliza el motor de regex de JavaScript (ECMAScript), que implementa la mayor parte de la sintaxis estándar más extensiones como named capture groups, lookbehind assertions y el flag s (dotAll). Los patrones escritos aquí funcionarán directamente en código JavaScript/TypeScript, Node.js y navegadores modernos.

    Flags disponibles y su significado

    Los flags modifican el comportamiento de la expresión regular:

    • gglobal: encuentra todas las coincidencias, no solo la primera.
    • iinsensitive: ignora diferencias entre mayúsculas y minúsculas.
    • mmultiline: hace que ^ y $ coincidan con el inicio y fin de cada línea, no solo del string completo.
    • sdotAll: permite que el punto . coincida con saltos de línea (\n).
    • uunicode: activa el modo Unicode completo para caracteres fuera del plano básico.
    • ysticky: la búsqueda se ancla a la posición lastIndex del objeto RegExp.

    Elementos de sintaxis más usados

    • . — cualquier carácter excepto salto de línea (con s, incluye saltos).
    • \d / \D — dígito / no dígito.
    • \w / \W — carácter de palabra (letra, dígito, guión bajo) / no palabra.
    • \s / \S — espacio en blanco / no espacio.
    • ^ / $ — inicio / fin del string (o línea con flag m).
    • *, +, ? — cero o más, uno o más, cero o uno (cuantificadores codiciosos).
    • {n,m} — entre n y m repeticiones.
    • [abc] — clase de caracteres: a, b o c.
    • [^abc] — cualquier carácter excepto a, b, c.
    • (abc) — grupo de captura.
    • (?:abc) — grupo sin captura.
    • (?=abc) / (?!abc) — lookahead positivo / negativo.
    • (?<=abc) / (?<!abc) — lookbehind positivo / negativo.
    • a|b — alternativa: a o b.

    Patrones comunes listos para usar

    • Email: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
    • URL: https?://[^\s/$.?#].[^\s]*
    • Número de teléfono (ES): (?:(?:\+|00)34)?[6789]\d{8}
    • Fecha (DD/MM/YYYY): (0[1-9]|[12]\d|3[01])/(0[1-9]|1[0-2])/\d{4}
    • IP v4: (?:\d{1,3}\.){3}\d{1,3}
    • Código postal español: (?:0[1-9]|[1-4]\d|5[0-2])\d{3}

    Preguntas frecuentes

    ¿Los patrones de esta herramienta funcionan en Python o PHP?

    La mayor parte de la sintaxis básica (clases de caracteres, cuantificadores, grupos) es compatible entre motores. Sin embargo, hay diferencias: Python usa re con su propia sintaxis de flags; PHP usa el motor PCRE. Siempre verifica los patrones en el entorno de destino antes de usarlos en producción.

    ¿Qué significa que una regex sea "codiciosa"?

    Los cuantificadores *, + y {n,m} son codiciosos por defecto: intentan coincidir con el mayor número posible de caracteres. Añadir ? los convierte en perezosos (lazy), haciendo que coincidan con el mínimo posible. Por ejemplo, <.+> coincide con el tag completo <b>texto</b>, mientras que <.+?> solo coincide con <b>.

    ¿Esta herramienta almacena mis patrones?

    Para esta herramienta compatible, el procesamiento local se usa siempre que sea posible.