Как можно произвести замены только по захваченному регуляркой тексту? Есть файл, где нужно поменять содержимое определённых тегов. Пример:
var str = "<tr><div id="test1">testtestet</div></tr><tr><div id="test2">testtestet</div></tr><tr><div id="test3">testtestet</div></tr>";
str = str.replace(/(<tr><div id=\"test2\">)(.*?)(<\/tr><\/div>)/g, '$1$2$3);
Мне нужно в содержимом второй группы ($2 — testtestest), допустим, заменить буквы t На т.
Используйте функцию обратного вызова в качестве аргумента замены:
var str = '<tr><div id="test1">testtestet</div></tr><tr><div id="test2">testtestet</div></tr><tr><div id="test3">testtestet</div></tr>';
str = str.replace(/(<tr><div id="test2">)([^]*?)(<\/div><\/tr>)/g, function($0,$1,$2,$3) {
return $1 + $2.replace(/t/g, 'т') + $3;
});
console.log(str);
[^]*? в поправленном шаблоне находит любые 0 и более символов, как можно меньше, включая символы перехода на новую строку. Можно также использовать [\s\S], а в Chrome/Node.js уже можно и точку с модификатором s использовать:
let str = '<tr><div id="test1">testtestet</div></tr><tr><div id="test2">test\ntest\net</div></tr><tr><div id="test3">testtestet</div></tr>';
str = str.replace(/(<tr><div id="test2">)(.*?)(<\/div><\/tr>)/sg, ($0,$1,$2,$3) => `${1}${$2.replace(/t/g, 'т')}${3}`);
console.log(str);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости