需求場(chǎng)景:提取百度ueditor中的所有樣式中背景圖片的地址脊僚;
百度ueditor距贷,這里就不多說(shuō)了柄冲,很強(qiáng)大的編輯器,我們知道忠蝗,百度ueditor中所有的樣式都是內(nèi)聯(lián)樣式现横,api中可以獲取整個(gè)html字符串。ok阁最,舉個(gè)栗子戒祠,比如醬樣紫:
我要提取的就是所有內(nèi)聯(lián)樣式中的
url()
里面的內(nèi)容,下面上代碼:
var reg = /url\((\S*)\)/g, ret = [];
function pick(str){
while(arr = reg.exec(str)) ret.push(arr[1]);
return ret;
}
pick(str);
//str就是要提取的字符串
這里估計(jì)有人會(huì)問(wèn)闽撤,match()方法不是直接可以取出么?
好得哆,我要說(shuō)的重點(diǎn)也是這里:
js里的match方法在正則/g模式下,沒(méi)辦法取到分組結(jié)果哟旗,比如說(shuō)這樣的結(jié)果沒(méi)法去掉兩個(gè)特定的字符串的:
Why? 你真的了解
match()
方法么贩据?我們先來(lái)打印一下不帶 g 是什么樣子的。
我們看到它返回一個(gè)數(shù)組闸餐,數(shù)組中有兩項(xiàng)饱亮,分別是帶特定字符串和不帶特定字符串的,一般如果只有全局只有一個(gè)的話舍沙,我們可以直接使用
str.match(/url\((\S*)\)/)[1];
//這樣取出來(lái)的自然是不帶特定字符串的
巴特近上!很多時(shí)候這兩個(gè)特定字符串會(huì)出現(xiàn)很多次,就比如我這個(gè)應(yīng)用場(chǎng)景拂铡,那就可以使用我上面的方法去破解壹无。