Как заменить все вхождения строки в JavaScript
Вы можете использовать JavaScript-метод replace()
в сочетании с регулярным выражением, чтобы найти и заменить все вхождения слова или подстроки внутри любой строки.
Давайте посмотрим на пример, чтобы понять, как работает этот метод:
<script>
var myStr = 'freedom is not worth having if it does not include the freedom to make mistakes.';
var newStr = myStr.replace(/freedom/g, "liberty");
// Печатаем измененную строку
document.write(newStr);
</script>
Однако, если строка поступает из неизвестных / ненадежных источников, таких как вводимые пользователем данные, вы должны экранировать ее перед передачей в регулярное выражение. Следующий пример покажет вам лучший способ найти и заменить одну строку на другую в JavaScript.
<script>
/* Определяем функцию для экранирования пользовательского ввода, которая будет рассматриваться как
буквальная строка в регулярном выражении */
function escapeRegExp(string){
return string.replace(/[.*+?^${}()|[\]\]/g, "\$&");
}
/* Определяем функцию для поиска и замены конкретного термина строкой замены */
function replaceAll(str, term, replacement) {
return str.replace(new RegExp(escapeRegExp(term), 'g'), replacement);
}
/* Тестирование нашей функции replaceAll() */
var myStr = 'if the facts do not fit the theory, change the facts.';
var newStr = replaceAll(myStr, 'facts', 'statistics')
// Печатаем измененную строку
document.write(newStr);
</script>