Bandera m de Expresiones Regulares en JavaScript (Multilínea)
Introducción al Modo Multilínea
La bandera m en expresiones regulares de JavaScript permite que las anclas ^ y $ coincidan con el inicio y el final de cada línea dentro de una cadena multilínea, en lugar de solo el inicio y el final de la cadena completa. Esto es especialmente útil al trabajar con texto multilínea donde necesitas realizar coincidencias de patrones línea por línea.
La bandera m: Activar el modo multilínea
Cuando usas la bandera m, las anclas ^ y $ coinciden con las posiciones antes y después de los saltos de línea dentro de la cadena.
Uso de la bandera m
En este ejemplo, la expresión regular ^abc coincide con el inicio de cada línea que comienza con "abc" debido a la bandera m. La bandera g asegura que todas las ocurrencias sean coincidentes. Sin la bandera m, solo coincidiría con "abc" al principio absoluto de la cadena.
Ejemplo: Coincidir con múltiples líneas
Aquí, la expresión regular ^start coincide con el inicio de las líneas que comienzan con "start" debido a la combinación de las banderas m y g.
Aplicaciones prácticas
Coincidir líneas en texto multilínea
La bandera m es especialmente útil para coincidir patrones específicos al inicio o al final de cada línea en una cadena multilínea.
Este ejemplo muestra cómo ^hello con la bandera m coincide con "hello" al inicio de cada línea.
Coincidir el final de las líneas en texto multilínea
De manera similar, puedes usar la bandera m para coincidir patrones al final de cada línea.
Aquí, world$ con la bandera m coincide con "world" al final de cada línea.
Ejemplo: Extraer líneas específicas
Este ejemplo demuestra cómo extraer todas las líneas que comienzan con "Error:" de un archivo de registro utilizando la bandera m.
Combinar banderas
Puedes combinar la bandera m con otras banderas para mejorar tus expresiones regulares. Por ejemplo, combinar la bandera m con la bandera insensible a mayúsculas y minúsculas i te permite realizar coincidencias multilínea sin distinguir entre mayúsculas y minúsculas.
Ejemplo: Coincidencia multilínea insensible a mayúsculas y minúsculas
En este ejemplo, la expresión regular coincide con las líneas que contienen "hello" sin importar el caso, debido a la combinación de las banderas m e i.
- El patrón de expresión regular
^.*hello.*$coincide con cualquier línea que contenga "hello" sin importar el caso. - La bandera
masegura que cada línea en la cadena multilínea se trate individualmente. Hello world,hello worldyHELLO WORLDcoinciden con el patrón porque contienen "hello" (insensible a mayúsculas/minúsculas) en algún lugar de la línea.
INFO
Usa la bandera m en las expresiones regulares de JavaScript para aplicar las anclas ^ y $ a cada línea en una cadena multilínea, mejorando tu capacidad para validar y manipular contenido línea por línea.
Usa la bandera m para validación línea por línea
La bandera m es ideal para escenarios donde necesitas validar o manipular cada línea individualmente dentro de una cadena multilínea.
Ejemplo: Validar un número de teléfono de EE. UU.
Esta expresión regular asegura que el número de teléfono esté en el formato (123) 456-7890. Utiliza ^ para afirmar el inicio y $ para afirmar el final, asegurando que la cadena completa coincida con el patrón especificado para cada línea.
Por lo tanto, tanto "(123) 456-7890" como "(234) 567-8901" coinciden con el patrón de expresión regular porque siguen el formato (xxx) xxx-xxxx, que es el patrón diseñado para coincidir.
Conclusión
La bandera m en las expresiones regulares de JavaScript extiende la funcionalidad de las anclas ^ y $ para coincidir con el inicio y el final de cada línea en una cadena multilínea. Esta capacidad es invaluable para procesar datos de texto multilínea, permitiendo una coincidencia y validación de patrones precisa línea por línea.
Práctica
¿Cuál es la función de la bandera 'm' en las expresiones regulares de JavaScript?