Javascript/regex: 逗号不在括号内才去掉

Javascript/regex: Remove comma only if it is not in brackets

只有不在括号里的逗号才可以替换吗

例如 filters=fuelType=D,make=[BMW,CITROEN,DACIA],price=(0,100) 对此: filters=fuelType=D&make=[BMW,CITROEN,DACIA]&price=(0,100)

这是您想要的正则表达式:/,\s*(?=[^)^\]]*(?:\(|\[|$))/g

这是 js fiddle 使用 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