Saltar al contenido principal
FreeOnlineTools Go
Español
Referencia

Hoja de referencia de expresiones regulares: sintaxis, banderas y patrones comunes

Por FreeOnlineTools Team · Actualizado 2026-08-28

Respuesta rápida

Una expresión regular combina caracteres literales, metacaracteres (., \d, \w, \s), cuantificadores (*, +, ?, {n,m}), anclajes (^, $, \b) y grupos ((...), [...]). Banderas como g (global), i (no distingue entre mayúsculas y minúsculas), m (multilínea) cambian el comportamiento de coincidencia. Los patrones de prueba se encuentran en vivo con nuestro Regex Tester antes de incrustarlos en el código.

Introducción

Las expresiones regulares (regex) describen patrones de texto utilizando un lenguaje formal compacto. Son compatibles con todos los lenguajes de programación, editores y herramientas de búsqueda modernos. Esta hoja de referencia es una referencia para la sintaxis definida por ECMAScript (utilizada por JavaScript), además de patrones comunes que puede copiar y adaptar. Utilice nuestro Probador de expresiones regulares para probar cualquier patrón con texto de muestra en su navegador.

Paso a paso

  1. Clases de personajes: unen un conjunto de caracteres

    [abc] coincide con a, b o c. [^abc] coincide con cualquier cosa excepto a, b, c. [a-z] coincide con cualquier letra minúscula. Clases predefinidas: \d = [0-9], \D = sin dígitos, \w = [A-Za-z0-9_], \W = sin palabras, \s = espacios en blanco, \S = sin espacios en blanco, . = cualquier carácter excepto nueva línea (use el indicador s para incluir nueva línea).

  2. Cuantificadores: cuántas veces repetir

    * = 0 o más. + = 1 o más. ? = 0 o 1. {n} = exactamente n. {n,} = al menos n. {n,m} = entre n y m. Agregar ? para coincidencias diferidas (por ejemplo, *? coincide con la menor cantidad posible). Greedy es el valor predeterminado y puede provocar un retroceso catastrófico en patrones anidados.

  3. Anclas y límites: dónde coincidir

    ^ coincide con el inicio de la cadena (o línea con la bandera m). $ coincide con el final. \b coincide con el límite de una palabra (entre \w y \W). \B coincide con un límite sin palabra. Los anclajes tienen ancho cero: prueban la posición sin consumir caracteres.

  4. Grupos y alternancia

    (abc) es un grupo de captura; use $1, $2 en reemplazos. (?:abc) es un grupo que no captura. (?=abc) es una anticipación (afirma lo que sigue). (?!abc) es una anticipación negativa. (?<=abc) es una búsqueda retrospectiva (ES2018+). a|b es alternancia (a o b).

  5. Banderas: cambiar el comportamiento de coincidencia

    g = global (busca todas las coincidencias, no solo la primera). i = no distingue entre mayúsculas y minúsculas. m = multilínea (^ y $ coinciden con los límites de las líneas). s = dotAll (. coincide con nueva línea). u = Unicode (trate el patrón como puntos de código Unicode; necesario para emoji y caracteres astrales). y = pegajoso (coincide solo con el último índice).

Ejemplos

Hacer coincidir una dirección de correo electrónico (práctico, RFC 5322 simplificado)

Aporte: Pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/

Producción: Coincide con '[email protected]' y '[email protected]' pero no con 'dirección simple' o '@no-usuario.com'

Extraiga todos los códigos de color hexadecimales de CSS

Aporte: Pattern: /#[0-9a-fA-F]{3,8}\b/g

Producción: In 'color: #fff; background: #1a2b3c4d' finds ['#fff', '#1a2b3c4d']

Validar una fecha ISO 8601 (AAAA-MM-DD)

Aporte: Pattern: /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/

Producción: Coincide con '2026-08-28' pero rechaza '2026-13-01' y '2026-02-31'

Reemplace los dígitos con # usando un grupo de captura

Aporte: 'Orden 42 enviada' reemplazada por /(\d+)/g →'#$1'

Producción: 'Orden #42 enviada'

Problemas comunes

  • Cuantificadores codiciosos que coinciden demasiado: '<.*>' en '<a><b>' coincide con la cadena completa '<a><b>' en lugar de '<a>'. Utilice '<.*?>' (perezoso) para hacer coincidir '<a>' primero.
  • Retroceso catastrófico: cuantificadores anidados como (a+)+b en la entrada 'aaaaaaaaaaaaaaaa!' puede tomar un tiempo exponencial. Vuelva a escribir el patrón o utilice grupos atómicos/cuantificadores posesivos cuando sea posible.
  • Olvidar la bandera u para Unicode: /^.$/ coincide con una sola unidad de código, por lo que emoji como '😀' (dos unidades de código) falla sin la bandera u. Añádelo siempre cuando hagas coincidir personajes astrales.
  • Confundir \b (límite de palabra) con \s (espacio en blanco): \b coincide entre un carácter de palabra y otro que no es una palabra, por lo que también funciona al principio/final de la cadena. \s solo coincide con caracteres de espacios en blanco reales.

Consejos

  • Pruebe siempre las expresiones regulares con muestras coincidentes y no coincidentes en nuestro Probador de expresiones regulares antes de incrustarlas en el código de producción; los casos extremos son fáciles de pasar por alto.
  • Prefiera las clases de caracteres [a-z] a la alternancia (a|b|...|z) para caracteres individuales: las clases son más rápidas y claras.
  • Utilice grupos que no sean de captura (?:...) cuando no necesite el valor capturado; la captura tiene un pequeño costo de rendimiento y satura la matriz de resultados.
  • Compile expresiones regulares una vez con la nueva RegExp() o un literal en el alcance del módulo, no dentro de un bucle activo: recompilar el mismo patrón en cada iteración desperdicia CPU.

Herramientas relacionadas

Guías relacionadas

Referencias