Inicio › Herramientas para desarrolladores › Explicador de regex

Explicador de regex

Pega una expresión regular para ver qué hace realmente: cada token explicado en lenguaje sencillo, un diagrama de vías del patrón, notas sobre sus flags, avisos sobre errores comunes y un cuadro de prueba en vivo.

Última actualización:

Diagrama de vías

Explicación token a token

Notas sobre los flags

    Copiar como

    Publicidad
    Publicidad

    Cómo usar Explicador de regex

    1. Pega tu regex en el cuadro, ya sea sin barras (\d{3}-\d{4}) o como literal con barras y flags (/\d+/g).
    2. Lee el resumen y la lista de tokens. Cada fila muestra una parte del patrón y con qué coincide; los grupos y las alternativas aparecen con sangría.
    3. Sigue el diagrama de vías desde el punto de la izquierda hasta el círculo de la derecha: los cuadros son lo que hay que encontrar, las bifurcaciones son alternativas y los bucles son repeticiones.
    4. Revisa las notas de flags y los avisos, y activa o desactiva flags para ver cómo cambia el significado.
    5. Pruébala con tu propio texto en el cuadro de prueba para confirmar las coincidencias y los grupos capturados.

    Tokens de regex de un vistazo

    TokenSignificadoEjemplo
    .Cualquier carácter excepto un salto de línea (cualquier carácter con el flag s)a.c coincide con "abc", "a-c"
    \d \w \sDígito, carácter de palabra (A–Z, a–z, 0–9, _), espacio en blanco\d\d coincide con "42"
    \D \W \SLos opuestos: no dígito, no carácter de palabra, no espacio en blanco\S+ coincide con una palabra con signos de puntuación
    [abc] [a-z] [^0-9]Un carácter de un conjunto, de un rango o que no está en el conjunto[aeiou] coincide con una vocal
    ^ $Inicio y final de la cadena (de cada línea con m)^Hi solo al principio
    \bLímite de palabra\bcat\b coincide con "cat" pero no con "category"
    * + ?0 o más, 1 o más, 0 o 1 (opcional)colou?r coincide con ambas grafías
    {3} {2,5} {2,}Exactamente 3, de 2 a 5, 2 o más\d{4} coincide con un año
    *? +?Versiones perezosas: lo mínimo posible<.+?> coincide con una etiqueta
    (…) (?<name>…)Grupo de captura, grupo con nombre(?<year>\d{4})
    (?:…)Grupo sin captura(?:ab)+
    a|bAlternancia: a o bcat|dog
    (?=…) (?!…)Lookahead: seguido de / no seguido de\d+(?=px) coincide con "12" en "12px"
    (?<=…) (?<!…)Lookbehind: precedido de / no precedido de(?<=\$)\d+ coincide con "5" en "$5"
    \1 \k<name>Referencia inversa: el mismo texto que capturó un grupo(\w)\1 coincide con "ll" en "hello"
    \p{L}Propiedad Unicode, aquí cualquier letra (necesita el flag u)\p{L}+ coincide con "Grüße"

    Cómo leer paso a paso una regex desconocida

    Los patrones largos se vuelven legibles en cuanto los divides en partes. Busca primero las anclas (^, $, \b), porque te indican si el patrón debe coincidir con toda la entrada o puede aparecer en cualquier parte. Después localiza los grupos, ya que los paréntesis muestran qué se captura y a qué se aplica un cuantificador. Luego lee cada parte de izquierda a derecha, asociando cada cuantificador al token o grupo que tiene justo delante: en ab+ solo se repite la b, en (ab)+ se repite el par.

    Las clases de caracteres son la fuente de confusión más común. Dentro de los corchetes, la mayoría de los símbolos pierden su significado especial, así que [.] es un punto literal, pero ^ al principio niega la clase y - entre dos caracteres forma un rango. En caso de duda, escápalo con una barra invertida.

    Preguntas frecuentes

    ¿Qué variante de regex usa el explicador?

    Sigue la sintaxis de JavaScript (ECMAScript), que también es muy parecida a la que usan la mayoría de los lenguajes para las funciones comunes: clases de caracteres, cuantificadores, grupos, lookahead y referencias inversas. Las funciones que solo existen en PCRE, Python o .NET, como los grupos atómicos, los cuantificadores posesivos, los flags en línea (?i) y \A o \Z, se reconocen y se marcan como no compatibles con JavaScript.

    ¿Cómo se lee un diagrama de vías?

    Empieza en el punto relleno de la izquierda y sigue las líneas hasta el círculo de la derecha. Cada cuadro por el que pasas debe coincidir en orden. Donde la línea se divide en ramas, puede coincidir cualquiera de ellas (alternancia). Una línea que salta un cuadro significa que es opcional, y una línea que vuelve hacia atrás por debajo significa que puede repetirse, con el número de repeticiones escrito debajo.

    ¿Qué diferencia hay entre cuantificadores codiciosos y perezosos?

    Los cuantificadores codiciosos (*, +, {n,m}) coinciden con todo lo posible y luego devuelven caracteres si el resto del patrón falla. Los cuantificadores perezosos (*?, +?, {n,m}?) coinciden con lo mínimo posible y solo toman más cuando hace falta. Para "a" "b", el patrón ".*" coincide con todo el texto, mientras que ".*?" coincide con cada parte entre comillas por separado.

    ¿Qué significa backtracking catastrófico?

    Los patrones con repeticiones anidadas, como (a+)+ o (\w+\s?)*, pueden probar un número exponencial de formas de dividir el texto cuando una coincidencia falla. Con textos largos, esto congela el programa. El explicador avisa cuando ve cuantificadores ilimitados anidados; haz más específica la parte interior o usa un solo cuantificador.

    ¿Por qué ^ o $ no coinciden en cada línea?

    Por defecto, ^ y $ solo coinciden al principio y al final de toda la cadena. Añade el flag m (multilínea) para que coincidan al principio y al final de cada línea.

    ¿Se suben mi patrón o mi texto?

    No. El análisis, la explicación, el dibujo del diagrama y la prueba se hacen con JavaScript en tu navegador.

    ¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

    Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

    Herramientas relacionadas

    Ver todas las de Entornos de prueba de código →