Expressões Regulares nos Métodos da String - JavaScript
Vários métodos do objeto String podem utilizar expressões regulares como parâmetro.
Método match
Para encontrar todas as correspondências em uma string, utiliza-se o método match()
const initialText = "Ele escreveu um artigo sobre arte moderna.";
const exp = /art[a-z]*/gi;
const result = initialText.match(exp);
result.forEach(value => console.log(value));
// Alternativamente
// console.log(result[0]);
// console.log(result[1]);
O símbolo asterisco indica a possibilidade de existir após a palavra "art" um número indefinido de caracteres de "a" a "z". Assim, o array result conterá as seguintes palavras:
artigo arte
Por outro lado, este método é semelhante ao método exec()
RegExp
exec()
const initialText = "Ele escreveu um artigo sobre arte moderna.";
const exp = /art[a-z]*/gi;
const result = exp.exec(initialText);
result.forEach(value => console.log(value));
O resultado será:
artigo
Divisão de string. Método split
O método split pode usar expressões regulares para dividir strings. Por exemplo, vamos dividir um texto em palavras usando o metacaractere \s
const initialText = "Hoje o tempo estava maravilhoso";
const exp = /\s/;
const result = initialText.split(exp);
result.forEach(value => console.log(value));
Saída no navegador:
Hoje o tempo estava maravilhoso
Pesquisa em string. Método search
O método search
const initialText = "olá mundo";
const exp = /mun/;
const result = initialText.search(exp);
console.log(result); // 4
Substituição. Método replace
O método replace
let menu = "Café da manhã: mingau, chá. Almoço: sopa, chá. Jantar: salada, chá.";
const exp = /chá/gi;
menu = menu.replace(exp, "café");
console.log(menu);
Saída no navegador:
Café da manhã: mingau, café. Almoço: sopa, café. Jantar: salada, café.
Outra forma do método aceita uma função de substituição. Esta função recebe a correspondência da expressão regular e retorna a string substituta. Por exemplo, vamos substituir o chá por café apenas no café da manhã:
let menu = "Café da manhã: mingau, chá. Almoço: sopa, chá. Jantar: salada, chá.";
const exp = /chá/gi;
let i = 0;
menu = menu.replace(exp, function(tee) {
if(i++ === 0) return "café";
else return tee;
});
console.log(menu); // Café da manhã: mingau, café. Almoço: sopa, chá. Jantar: salada, chá.
Utilizamos um contador como indicador de substituição. Se for igual a 0, realizamos a substituição. Nos demais casos, retornamos a correspondência original, "chá".
Caso mais complexo. Suponhamos o seguinte texto:
Publication Date: 2021-09-06 Updated on: 2021-09-14
Aqui usamos datas no formato yyyy-MM-dd. Vamos mudar o formato para "dd.MM.yyyy" com o seguinte programa:
const exp = /\d{4}-\d{2}-\d{2}/g;
let text = "Publication Date: 2021-09-06\nUpdated on: 2021-09-14";
text = text.replace(exp, function(date){
const arr = date.split("-");
return `${arr[2]}.${arr[1]}.${arr[0]}`;
});
console.log(text);
Extraímos todas as correspondências da expressão regular /\d{4}-\d{2}-\d{2}/g
replace
date
split()
Publication Date: 06.09.2021 Updated on: 14.09.2021