Ваша HTML-строка не является HTML. Это CSS.
Ваше регулярное выражение работает . Вам нужно добавить ag, чтобы получить все из них
Также у вас не может быть новых строк в строке JS - вам нужны обратные галочки, чтобы разрешить перевод строки
const replacableImage = "abc.jpg";
let CSS =`
.reg-inner {
background-image: linear-gradient),url(http:\\abc.com);
}
.reg-left {
background-image: linear-gradient),url(http:\\abc.com);
background-size: cover;
}
.reg-right {
background-image: linear-gradient),url(http:\\abc.com);
}`
CSS = CSS.replace(/url\((['"]?)(.+?)\1\)/g, "url(" + replacableImage + ")")
console.log(CSS)
Если вам нужен только один из них, вы можете запустить функцию замены или split + map + join
const replacableImage = "abc.jpg";
let CSS = `
.reg-inner {
background-image: linear-gradient),url(http:\\abc.com);
}
.reg-left {
background-image: linear-gradient),url(http:\\abc.com);
background-size: cover;
}
.reg-right {
background-image: linear-gradient),url(http:\\abc.com);
}`
CSS = CSS.split('.reg-').map(
str => str.indexOf('left') === 0 ?
str.replace(/url\((['"]?)(.+?)\1\)/, `url("${replacableImage}")`) : str
)
.join('.reg-')
console.log(CSS)