Substituindo strings com expressões regulares no JavaScript
Leia em menos de um minuto
O JavaScript, embora considerado uma Toy Language, possui uma série de detalhes que nem todos conhecem. Um deles está no modo como a função String#replace
funciona.
O modo mais simples de usá-la é passando uma expressão regular e uma string que será usada na substituição.
string = "2 hours from now";
string.replace(/2/, "3");
// "3 hours from now"
Você também pode utilizar grupos na substituição.
string = "<strong>JavaScript</strong>";
string.replace(/<([^>]+)>(.*?)<\/>/, "$2");
// "JavaScript"
Às vezes, queremos fazer alguma operação matemática com algum número. E é aí que entra um “truque” que nem todos conhecem. A função String#replace
permite passar uma função, cujo retorno será usado na substituição.
string = "1 + 1 = ?";
string.replace(/(\d+) (\d+) = \?/, function(expression, n1, n2){
return n1 + " + " + n2 + " = " + (parseInt(n1, 10) + parseInt(n2, 10));
});
// 1 + 1 = 2
Esta é uma funcionalidade desconhecida, mas que pode facilitar muito a sua vida em alguns casos.