Grupos de captura en el método replace en expresiones regulares de JavaScript
Al trabajar con el método replace, si
ponemos algo en un grupo de captura en la expresión regular,
en la cadena de reemplazo podemos insertar el contenido
de este grupo de captura escribiendo el signo de dólar $
y el número del grupo. Por ejemplo, $1 - primer
grupo de captura, $2 - segundo grupo de captura y así sucesivamente.
Para qué sirve esto y cómo usarlo, veámoslo con ejemplos.
Ejemplo
Encontremos todos los números y en su lugar insertemos estos mismos números, pero entre paréntesis. Para esto todos los números encontrados los reemplazaremos por ellos mismos, pero entre paréntesis:
let str = '1 23 456 xax';
let res = str.replace(/(\d+)/g, '($1)');
Como resultado, en la variable se guardará lo siguiente:
'(1) (23) (456) xax'
Ejemplo
Encontremos todas las cadenas que representan
números con 'x' alrededor y reemplacemos estos
números por ellos mismos, pero con '!' alrededor:
let str = 'x1x x23x x456x xax';
let res = str.replace(/x(\d+)x/g, '!$1!');
Como resultado, en la variable se guardará lo siguiente:
'!1! !23! !456! xax'
Ejemplo
Resolvamos el siguiente problema: dadas cadenas
de la forma 'aaa@bbb' - letras, luego arroba,
luego letras. Es necesario intercambiar las letras
antes de @ y después.
let str = 'aaa@bbb ccc@ddd';
let res = str.replace(/([a-z]+)@([a-z]+)/g, '$2@$1');
Como resultado, en la variable se guardará lo siguiente:
'bbb@aaa ddd@ccc'
Problemas prácticos
Dada una cadena:
let str = '12 34 56 78';
Intercambie los dígitos en todos los números de dos dígitos.
Dada una cadena con una fecha:
let str = '31.12.2025';
Convierta esta fecha a '2025.12.31'.