3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您需要使用'g'開(kāi)關(guān)進(jìn)行全局搜索
var result = mystring.match(/(&|&)?([^=]+)=([^&]+)/g)

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果你不想依賴于運(yùn)行exec樣式匹配所帶來(lái)的“盲目匹配” ,那么JavaScript確實(shí)帶有內(nèi)置的全匹配功能,但它是replace函數(shù)調(diào)用的一部分,當(dāng)使用“如何處理捕獲”時(shí)小組“ 處理功能:
var data = {};
var getKeyValue = function(fullPattern, group1, group2, group3) {
data[group2] = group3;
};
mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, getKeyValue);
完成。
而不是使用捕獲組處理函數(shù)來(lái)實(shí)際返回替換字符串(對(duì)于替換處理,a這里調(diào)用的第一個(gè)arg 是完整模式匹配,后續(xù)args是單獨(dú)的捕獲組,在這種情況下b是組1,c組2等)我們只需捕獲第2組和第3組,并緩存該對(duì)。
因此,不要編寫(xiě)復(fù)雜的解析函數(shù),請(qǐng)記住JavaScript中的“matchAll”函數(shù)只是用替換處理函數(shù)“替換”,并且可以獲得很多模式匹配效率。
添加回答
舉報(bào)