Замена строк и работа с дефисом
С помощью такого кода:
var a = "текста, текстов, текст-ами";
a.replace(/текст([а-я-]+)/g,"итог$1 (подитог)");
Получается такой ответ:
итога (подитог), итогов (подитог), итог-ами (подитог)
Как делать так, чтобы получился такой ответ:
итога (подитог), итогов (подитог), текст-ами (подитог)
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
В replace вместо строки-замены, можно подставить и функцию. Она будет вызвана для каждого совпадения, и кусок строки заменится на то, что вернет функция.
var str = "текста, текстов, текст-ами";
let example1 = str.replace(/текст([а-я-]+)/g, function(full_match, _1st_group) {
return (/-/.test(_1st_group) ? full_match : "итог" + _1st_group) + " (подитог)"
});
console.log( example1 );
/***/
let example2 = (full, a) => (/-/.test(a) ? full : "итог" + a) + " (подитог)";
console.log( str.replace(/текст([а-я-]+)/g, example2) );