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)

FlagNombreEfecto
gglobalEncuentra todas las coincidencias, no solo la primera
iignore caseA coincide con a
mmultiline^ y $ coinciden con límites de línea, no solo con los extremos de la cadena
sdotAll. coincide con caracteres de nueva línea
uUnicode\u{...} consciente de Unicode y algunos property escapes
ystickyCoincide 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.

Volver al resumen del curso