Как заменить данные в строке регуляркой с данными из переменной?
Нужно найти текст и обернуть его в теги с классом. Например ищу текст "при". Если я просто пишу через паттерн, то всё хорошо:
let str = 'Принадлежности и приложение';
let result = str.replace(/(при)/ig, '<span class="wrap">$1</span>');
console.log(result);
Однако текст динамический, его вводит пользователь. Я вынес данные в переменную и пытаюсь использовать RegExp
let str = 'Принадлежности и приложение';
let searchValue = 'при';
let pattern = new RegExp(searchValue, 'gi');
let result =str.replace(pattern, '<span class="wrap">$1</span>');
console.log(result);
Но в итоге ничего не подставляется. Что нужно изменить в коде, чтоб значение заменялось как в первом примере?
Пока получилось как-то так:
result = str.replace(pattern, '<span class="wrap">' + pattern.exec(str)[0] + '</span>');
Не знаю это верно или можно как-то по-другому
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Вы просто забыли скобки, которые нужны для использования $1 в замене. Попробуйте так:
let pattern = new RegExp(`(${searchValue})`, 'gi');