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

Нужно найти текст и обернуть его в теги с классом. Например ищу текст "при". Если я просто пишу через паттерн, то всё хорошо:

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');
→ Ссылка