Как сделать замену в захваченном регуляркой тексте?

159
03 октября 2021, 05:20

Как можно произвести замены только по захваченному регуляркой тексту? Есть файл, где нужно поменять содержимое определённых тегов. Пример:

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);

Мне нужно в содержимом второй группы ($2testtestest), допустим, заменить буквы t На т.

Answer 1

Используйте функцию обратного вызова в качестве аргумента замены:

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);

READ ALSO
Как вывести в переменную JS ответ от Yandex Translation API?

Как вывести в переменную JS ответ от Yandex Translation API?

Всем приветЕсть необходимость переводить отдельные строки с одного языка на другой

163
Github как правильно устанавливать и пользоваться пакетами

Github как правильно устанавливать и пользоваться пакетами

Здраствуйте, подскажите, как правильно пользоваться GitHub? Через npm умею устанавливать пакеты, а как их правильно подключить к проекту не могу...

222
Подключение Vue Js пакетов к проекту

Подключение Vue Js пакетов к проекту

Здраствуйте, не получается подключить пакеты к проекту, в моем случае палитру к backend админкиВ админке использую Yii и Php Пробовал по инструкции...

172