[英]What javascript regular expression can I use to remove HTML code?
[英]regular expression to unlink html code with javascript
抱歉,我不敢相信這個問題在stackoverflow中沒有解決,但是我一直在搜索很多,但找不到任何解決方案。
我想以這種方式用正則表達式更改HTML代碼:
testing <a href="url">anchor</a>
至
testing anchor
只有我想在不使用DOM函數的情況下取消文本代碼的鏈接,該代碼位於文檔中未包含的字符串中,並且我不想刪除a
的其他標簽。
如果您真的不想使用DOM函數(為什么?),可以這樣做
str = str.replace(/<[^>]*>/g, '')
如果您非常確定自己沒有更復雜的HTML,則可以使用它,但是在許多情況下它會失敗,例如某些嵌套標簽或屬性中的>
。 您可能使用更復雜的正則表達式解決了一些問題,但是在一般情況下,它們並不是此工作的正確工具。
如果你不想刪除其他標簽不是a
,這樣做:
str = str.replace(/<\/?a( [^>]*)?>/g, '')
這改變了
<a>testing</a> <a href="url"><b>a</b>nchor</a><div>test</div><aaa>E</aaa>
至
testing <b>a</b>nchor<div>test</div><aaa>E</aaa>
我知道您只想使用正則表達式,對於將來的觀看者來說,這是使用DOM方法的簡單解決方案。
var a = document.createElement("div");
a.innerHTML = 'testing <a href="url">anchor</a>';
var wordsOnly = a.textContent || a.innerText;
這不會在復雜的用例上失敗,允許嵌套標簽,並且很清楚發生了什么:
我們正在創建的元素不會被添加到實際的DOM中,因為我們沒有在任何地方添加它,它將保持不可見。 這是用來說明這是如何工作的小提琴 。
如前所述,您無法使用正則表達式解析HTML。 主要原因是HTML元素嵌套,而正則表達式無法處理。
也就是說,在我將要提到的一些限制下,您可以執行以下操作:
string.replace (/(\b\w+\s*)<a\s+href="([^"]*)">(.*)<\/a>/g, '$1 $3')
這就要求在標記之前必須有一個單詞,單詞和標記之間的間距是可選的,除了<a>
標記中指定的href
之外,沒有其他屬性,並且您可以接受<a>
和之間的任何內容。
您可以從字符串創建DOM對象,使用DOM方法進行解析,而無需將所述DOM對象附加到文檔中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.