2017-06-22 41 views
-1

只有當它不在括號內時纔可以替換逗號。Javascript/regex:只有當它不在括號內時,才能刪除逗號

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

+0

它似乎你會用'&'替換它們,你需要重新格式化你的問題,並添加你得到的。這不是一個幫助/我的地方。 – Hitmands

+0

有關SO的幾十個問題關於查找內容或未找到括號內的內容。請搜索它們。基本概念是搜索**或**括號內的表達式**或**您要替換的內容,然後僅替換後者。 – 2017-06-22 16:50:28

+2

你能提供一些更廣泛的背景來解釋你正在試圖解決的實際問題嗎?你是如何以逗號分隔的字符串開頭的? (大概)構建URL參數可能更簡單,而不是將混淆的正則表達式應用於該字符串。 –

回答

1

這是你想要的正則表達式:/,\s*(?=[^)^\]]*(?:\(|\[|$))/g

這裏的爵士小提琴代替你的字符串逗號之外[]()&使用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