Javascript/regex: удаляйте запятую, только если она не в скобках

Можно ли заменить запятую, только если она не в скобках.

напримерfilters=fuelType=D,make=[BMW,CITROEN,DACIA],price=(0,100)к этому:filters=fuelType=D&make=[BMW,CITROEN,DACIA]&price=(0,100)

1 ответ

Решение

Это регулярное выражение, которое вы хотите: /,\s*(?=[^)^\]]*(?:\(|\[|$))/g

Вот скрипка js, заменяющая ваши строковые запятые снаружи [] а также () за & с помощью String.prototype.replace():

var string = 'filters=fuelType=D,make=[BMW,CITROEN,DACIA],price=(0,100)';
var result = string.replace(/,\s*(?=[^)^\]]*(?:\(|\[|$))/g, '&');
alert(result); // -> `filters=fuelType=D&make=[BMW,CITROEN,DACIA]&price=(0,100)`

https://jsfiddle.net/tmms2mck/

А вот объяснение этого регулярного выражения в regex101: https://regex101.com/r/hAuEQm/1

Другие вопросы по тегам