Lección 3
Flags y modos de coincidencia
Coincidencia global, sin distinguir mayúsculas, multilínea, dotAll y Unicode.
Las flags cambian cómo el motor escanea la entrada — no qué significan los caracteres. En JavaScript, las flags aparecen tras el / de cierre o como segundo argumento de new RegExp(pattern, flags).
Flags habituales (JavaScript)
| Flag | Nombre | Efecto |
|---|---|---|
g | global | Encuentra todas las coincidencias, no solo la primera |
i | ignore case | A coincide con a |
m | multiline | ^ y $ coinciden con límites de línea, no solo con los extremos de la cadena |
s | dotAll | . coincide con caracteres de nueva línea |
u | Unicode | \u{...} consciente de Unicode y algunos property escapes |
y | sticky | Coincide solo en lastIndex (iteración avanzada) |
Otros lenguajes exponen interruptores similares (re.IGNORECASE, (?i), etc.) con nombres ligeramente distintos.
La coincidencia global importa
Sin g, String.prototype.match y muchos bucles exec se detienen tras el primer acierto. Los parsers de logs y herramientas de resaltado casi siempre necesitan modo global — o iteración explícita.
Cuidado con objetos regex con estado: un RegExp global actualiza lastIndex. Reutilizar una instancia entre cadenas no relacionadas puede saltarse coincidencias a menos que reinicies lastIndex.
Archivos de log multilínea
Los archivos de log contienen muchas líneas. Con m, ^ERROR coincide con líneas que empiezan con ERROR, que suele ser lo que quieres. Sin m, ^ a menudo significa solo el inicio del bloque completo.
Combínalo con g para encontrar cada línea de error en un pegado.
DotAll y contenido pegado
La entrada de usuario y las cadenas JSON pueden incluir \n. Por defecto . no cruza líneas; s (dotAll) permite que . las coincida — útil para patrones «cualquier cosa hasta la etiqueta de cierre» cuando aceptas el riesgo de coincidir de más.
Unicode y texto internacional
Nombres de usuario, ciudades y slugs pueden incluir letras no ASCII. La flag u habilita el manejo correcto de pares sustitutos y clases \p{...} en JavaScript moderno.
Sin conciencia de Unicode, \w puede omitir caracteres válidos en apps internacionalizadas.
Conclusión clave
Cuando un patrón «funciona en una línea pero no en el archivo», comprueba las flags primero — especialmente g, m y s. Luego revisa anclas y codicia.