2017-03-07 41 views
-2

有人可以幫助我在此:正則表達式遞歸HTML去除串由類和標籤名

console.log('<span class="tooltip">aaaa</span><b>ok</b> <span class="tooltip">bbbb</span>'.replace('/<span .*?class="(.*?tooltip.*?)">(.*?)<\/span>/\g', '')) 

我想刪除與類名.tooltip span標籤,因此這在控制檯打印「好吧

另外我想不修剪字符串,所以如果有任何隱藏的字符像\n不應該被刪除。

+0

是否需要使用正則表達式?這可能是解析HTML最難的方法。 –

+0

可不管我只是想帶他們出去 – sbaaaang

回答

2

你可以這樣做:

const data = '<span class="tooltip">aaaa</span><b>ok</b> <span class="tooltip">bbbb</span>' 
 
const removeTags = data => data.replace(/\s*<span.*?class="tooltip".*?>(.*?)\s*<\/span>\s*/g, '') 
 

 
console.log(removeTags(data))

這也將匹配多:

const data = `<span class="tooltip">aaaa 
 

 
</span><b>ok</b> <span class="tooltip">bbbb</span>` 
 
const removeTags = data => data.replace(/(?:\s|\n)*<span(?:.|\n)*?class="tooltip"(?:.|\n)*?>(?:[^])*?(?:\s|\n)*<\/span>(?:\s|\n)*/g, '') 
 
console.log(removeTags(data))

+0

我需要通過標籤名稱和類刪除,你展示一個似乎去掉所有的HTML標籤還是我誤? – sbaaaang

+0

是的,那麼你想刪除什麼標籤? –

+0

跨度類.tooltip :) – sbaaaang

0

您可以使用.getElementsByClassName()找到他們,.remove()將其刪除:

var input = '<span class="tooltip">aaaa</span><b>ok</b> <span class="tooltip">bbbb</span>'; 
 
var dom = document.createElement("div"); 
 
var toRemove; 
 

 
dom.innerHTML = input; 
 
toRemove = dom.getElementsByClassName("tooltip"); 
 
while (toRemove.length > 0) { 
 
    toRemove[0].remove(); 
 
} 
 
console.log(dom.innerHTML);

對於更復雜的選擇,你可以使用,例如,.querySelectorAll()

這種方法固然不使用正則表達式,但它具有易於維護和更健壯的優點(HTML不是常規語言,因此cannot be reliably parsed with regular expressions)。