Capturas no método replace em expressões regulares JavaScript
Ao trabalhar com o método replace, se
capturarmos algo na expressão regular,
na string de substituição podemos inserir o conteúdo
dessa captura escrevendo o cifrão $
e o número da captura. Por exemplo, $1 - primeira
captura, $2 - segunda captura e assim por diante.
Vamos ver para que isso serve e como usar com exemplos.
Exemplo
Vamos encontrar todos os números e, em vez deles, inserir esses mesmos números, mas entre parênteses. Para isso, todos os números encontrados serão substituídos por eles mesmos, mas entre parênteses:
let str = '1 23 456 xax';
let res = str.replace(/(\d+)/g, '($1)');
Como resultado, o seguinte será armazenado na variável:
'(1) (23) (456) xax'
Exemplo
Vamos encontrar todas as strings que representam
números com 'x' ao redor e substituir esses
números por eles mesmos, mas com '!' ao redor:
let str = 'x1x x23x x456x xax';
let res = str.replace(/x(\d+)x/g, '!$1!');
Como resultado, o seguinte será armazenado na variável:
'!1! !23! !456! xax'
Exemplo
Vamos resolver o seguinte problema: dadas strings
do tipo 'aaa@bbb' - letras, depois arroba,
depois letras. É necessário trocar as letras
antes do @ e depois.
let str = 'aaa@bbb ccc@ddd';
let res = str.replace(/([a-z]+)@([a-z]+)/g, '$2@$1');
Como resultado, o seguinte será armazenado na variável:
'bbb@aaa ddd@ccc'
Problemas práticos
Dada a string:
let str = '12 34 56 78';
Troque os dígitos em todos os números de dois dígitos de lugar.
Dada uma string com uma data:
let str = '31.12.2025';
Converta esta data para '2025.12.31'.