Как с помощью регулярного выражения при определенном событии заменять значение внутри скобок?

Есть строка str = 'Количество товаров () в данной категории'; в модальном окне, которая предполагает разные значения внутри круглых скобок () как-то (1),(15),(20) при выборе различных опций, т.е. с помощью регулярки мне нужно динамически менять значения (1),(15),(20).

Для этой цели я планирую проверять наличие внутри скобок значения или проверку на пустоту

let quantity = 5;
let str = 'Количество товаров () в данной категории';
str = srt.replace(/([\s]+|^$)/,quantity);

Но, в где-то я ошибся и не получаю запланированного результата


Ответы (3 шт):

Автор решения: IvaMuxa

Для того чтобы регулярное выражение не рассматривало скобки как спецсимвол нужно их экранировать "\" и внутри скобок у вас числа а не пустые символы поэтому вместо \s используем \d

let quantity = 5;
let str = 'Количество товаров (4564) в данной категории';
str = str.replace(/\([\d]*\)/, "("+quantity+")");
console.log(str)

→ Ссылка
Автор решения: ksa

Но, в где-то я ошибся и не получаю запланированного результата

Предложу такой вариант...

const quantity = 5;
let str = 'Количество товаров () в данной категории';
str = str.replace(/(?<=\().*(?=\))/, quantity);
console.log(str)

→ Ссылка
Автор решения: Алексей Шиманский

Зачем стрелять пушкой по мухе? Регулярные выражения здесь совершенно не нужны и ни к месту. Правильно сделать так: для данного числа сделать отдельный тег, даже банально хоть span с id, и уже его использовать.

Написать document.querySelector('#my-number').textContent = 'xxx', гораздо проще в исполнении и уж тем более в понимании другими разработчиками что тут происходит

→ Ссылка