Как с помощью регулярного выражения при определенном событии заменять значение внутри скобок?
Есть строка str = 'Количество товаров () в данной категории';
в модальном окне, которая предполагает разные значения внутри круглых скобок ()
как-то (1),(15),(20) при выборе различных опций, т.е. с помощью регулярки мне нужно динамически менять значения (1),(15),(20).
Для этой цели я планирую проверять наличие внутри скобок значения или проверку на пустоту
let quantity = 5;
let str = 'Количество товаров () в данной категории';
str = srt.replace(/([\s]+|^$)/,quantity);
Но, в где-то я ошибся и не получаю запланированного результата
Ответы (3 шт):
Для того чтобы регулярное выражение не рассматривало скобки как спецсимвол нужно их экранировать "\" и внутри скобок у вас числа а не пустые символы поэтому вместо \s используем \d
let quantity = 5;
let str = 'Количество товаров (4564) в данной категории';
str = str.replace(/\([\d]*\)/, "("+quantity+")");
console.log(str)
Но, в где-то я ошибся и не получаю запланированного результата
Предложу такой вариант...
const quantity = 5;
let str = 'Количество товаров () в данной категории';
str = str.replace(/(?<=\().*(?=\))/, quantity);
console.log(str)
Зачем стрелять пушкой по мухе? Регулярные выражения здесь совершенно не нужны и ни к месту. Правильно сделать так: для данного числа сделать отдельный тег, даже банально хоть span
с id
, и уже его использовать.
Написать document.querySelector('#my-number').textContent = 'xxx'
, гораздо проще в исполнении и уж тем более в понимании другими разработчиками что тут происходит