Multilínea en expresiones regulares de JavaScript
Las expresiones regulares al trabajar con cadenas multilínea tienen sus particularidades. Vamos a analizarlas usando como ejemplo la siguiente cadena, que contiene caracteres comunes, caracteres de salto de línea y tabulaciones:
let str = `111
222
333
444`;
Salto de línea
Los caracteres de salto de línea se pueden
capturar usando el comando '\n':
let res = str.replace(/\n/g, '!');
Como resultado, se almacenará lo siguiente en la variable (los espacios entre líneas son tabulaciones):
`111! 222! 333! 444`;
Tabulación
Los caracteres de tabulación se pueden
capturar usando el comando '\t':
let res = str.replace(/\t/g, '!');
Como resultado, se almacenará lo siguiente en la variable:
`
111
!222
!333
!444
`;
Comportamiento del punto
El comando '.' en una cadena
multilínea no captura los caracteres de salto de línea:
let res = str.replace(/./g, '!');
Como resultado, se almacenará lo siguiente en la variable:
`
!!!
!!!!
!!!!
!!!!
`;
Cualquier carácter
Para capturar todos los caracteres en una cadena
multilínea, se usa un truco ingenioso que consiste
en la combinación [\s\S]. Esta construcción encontrará
todos los caracteres comunes y todos los saltos de línea:
let res = str.replace(/[\s\S]/g, '!');
Como resultado, se almacenará lo siguiente en la variable:
`!!!!!!!!!!!!!!!!!!`;
Acento circunflejo (^)
Con el modificador 'm'
se puede activar el modo multilínea.
En este caso, el circunflejo coincidirá con
el inicio de cada línea:
let res = str.replace(/^/gm, '!');
Como resultado, se almacenará lo siguiente en la variable:
`
!111
!222
!333
!444
`;
Signo de dólar ($)
El comando '$' en el modo multilínea
coincidirá con el final de cada línea:
let res = str.replace(/$/gm, '!');
Como resultado, se almacenará lo siguiente en la variable:
`
111!
222!
333!
444!
`;
Problemas prácticos
Dada la cadena:
`
abc
def
ghi
jkl
`;
Escribe una expresión regular que transforme esta cadena en la siguiente:
`
abc!
def!
ghi!
jkl!
`;
Dada la cadena:
`
abc
def
ghi
jkl
`;
Escribe una expresión regular que transforme esta cadena en la siguiente:
`
! abc
! def
! ghi
! jkl
`;
Dada la cadena:
`
abc
def
ghi
jkl
`;
Escribe una expresión regular que transforme esta cadena en la siguiente:
`!
abc
def
ghi
jkl
!`;
Dada la cadena:
`
abc
def
ghi
jkl
`;
Escribe una expresión regular que transforme esta cadena en la siguiente:
`!
! abc
! def
! ghi
! jkl
!`;
Dada la cadena:
`
abc
def
ghi
jkl
`;
Escribe una expresión regular que transforme esta cadena en la siguiente:
`!
abc!
def!
ghi!
jkl!
!`;
Dada la cadena:
`
abc
def
ghi
jkl
`;
Escribe una expresión regular que transforme esta cadena en la siguiente:
`
!abc
!def
!ghi
!jkl
`;