Herramienta gratuita

    Expresión regular Probador

    Prueba, depura y visualiza expresiones regulares con comparaciones en tiempo real.

    Expresión regular

    //g
    Etiquetas:
    Ajustes predefinidos:

    Cadena de prueba

    ¿Qué son las expresiones regulares?

    Las expresiones regulares (regex) son patrones que se utilizan para encontrar coincidencias entre combinaciones de caracteres en cadenas de texto. Son compatibles con prácticamente todos los lenguajes de programación y resultan esenciales para el procesamiento de texto, la validación de entradas, la búsqueda y sustitución, y el análisis de registros.

    Indicadores de expresiones regulares en JavaScript

    • g — Global: encuentra todas las coincidencias, no solo la primera
    • i — Sin distinción entre mayúsculas y minúsculas
    • m — Multilínea: ^ y $ coinciden con los límites de línea
    • s — Dotall: . coincide con caracteres de salto de línea

    Casos de uso habituales

    • Validación de direcciones de correo, números de teléfono y URL
    • Extracción de datos de archivos de registro y texto estructurado
    • Buscar y reemplazar en editores de código e IDE
    • Creación de máscaras de entrada y validadores de formularios
    • Análisis y transformación de datos CSV, JSON y XML

    Cuándo recurrir a las expresiones regulares

    Las expresiones regulares son ideales para patrones breves y bien definidos en los que es necesario buscar coincidencias, extraer o sustituir texto: análisis de líneas de registro, reglas de enrutamiento de URL, validación de campos de formulario y operaciones de búsqueda y sustitución dentro de un editor. Sin embargo, se convierten en un problema cuando la entrada es en realidad un lenguaje estructurado: HTML, JSON, código fuente o cualquier cosa con delimitadores anidados. Para esos casos, utiliza un analizador sintáctico de verdad; la expresión regular que escribas hoy fallará silenciosamente en el próximo caso extremo.

    Expresión regular Preguntas frecuentes

    Respuestas rápidas a las dudas sobre expresiones regulares con las que te topas al escribir patrones a mano.

    ¿Qué variante de expresiones regulares utiliza este probador?
    Expresiones regulares de ECMAScript/JavaScript (el motor integrado en tu navegador). Los patrones que funcionan aquí también lo harán en `String.prototype.match`, `RegExp.test` y la mayoría de los linters o extensiones de editor modernos basados en JS. Los patrones escritos para PCRE (PHP, Perl), `re` de Python o `regexp` de Go pueden comportarse de forma diferente; las miradas hacia atrás, los grupos atómicos y la sintaxis de grupos con nombre son puntos de divergencia habituales.
    ¿Cómo puedo hacer que mi patrón no distinga entre mayúsculas y minúsculas?
    Activa el indicador `i` (sin distinción entre mayúsculas y minúsculas). Esto aplica la conversión de mayúsculas y minúsculas a todo el patrón, por lo que `/Hello/i` coincide con `hello`, `HELLO` y `HeLLo`. Si solo quieres que una parte del patrón ignore la distinción entre mayúsculas y minúsculas, debes especificar los caracteres de forma explícita, ya que las expresiones regulares de JavaScript no admiten modificadores en línea como `(?i:...)`.
    ¿Por qué mi expresión regular no encuentra coincidencias en varias líneas?
    Hay dos opciones que influyen en el comportamiento con cadenas de varias líneas. El indicador `m` (Multiline) modifica `^` y `$` para que coincidan en los límites de línea en lugar de solo al principio y al final de toda la cadena, lo cual resulta útil para la validación línea por línea. Por otra parte, el indicador `s` (dotAll) hace que `.` coincida también con los saltos de línea; sin él, `.*` se detiene en el primer `\n`. La mayoría de los casos de uso multilínea necesitan ambos.
    ¿Cuál es la diferencia entre los cuantificadores «greedy» y «lazy»?
    Por defecto, los cuantificadores como «*», «+» y «{n,m}» son «codiciosos»: consumen toda la entrada posible siempre que la coincidencia global pueda completarse con éxito. Añadir «?» los convierte en perezosos: consumen lo mínimo y dejan que las partes posteriores del patrón se encarguen del resto. El cuantificador codicioso «<.+>» frente a «» coincide con toda la cadena; el cuantificador perezoso «<.+?>» solo coincide con «». Los cuantificadores perezosos suelen ser lo que se necesita al extraer campos entre delimitadores.
    ¿Cómo puedo escapar los caracteres especiales en mi patrón?
    ¿Por qué mi expresión regular encuentra más (o menos) coincidencias de las esperadas?