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