我有一個JavaScript的字符串,它包括一個a
標記與href
。我想刪除所有鏈接和的文字。我知道如何刪除鏈接並留下內文,但我想徹底刪除鏈接。正則表達式在Javascript中刪除鏈接
例如:
var s = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";
我想用一個正則表達式,所以我留下了:
s = "check this out. cool, huh?";
我有一個JavaScript的字符串,它包括一個a
標記與href
。我想刪除所有鏈接和的文字。我知道如何刪除鏈接並留下內文,但我想徹底刪除鏈接。正則表達式在Javascript中刪除鏈接
例如:
var s = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";
我想用一個正則表達式,所以我留下了:
s = "check this out. cool, huh?";
這將去掉<a
和/a>
之間的一切:
mystr = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";
alert(mystr.replace(/<a\b[^>]*>(.*?)<\/a>/i,""));
這不是真的萬無一失,但也許它會爲你的目的做...
的正則表達式是在解析HTML根本不好(見Can you provide some examples of why it is hard to parse XML and HTML with a regex?爲什麼)。你需要的是一個HTML解析器。有關使用各種解析器的示例,請參閱Can you provide an example of parsing HTML with your favorite parser?。
重複http://www.google.com/search?q=site:stackoverflow.com+%22Regexes+are+fundamentally+bad+at+parsing+HTML%22;) – Gumbo 2009-06-06 17:39:58
如果你只是想去掉<a>
元素,下面應該很好地工作:
s.replace(/<a [^>]+>[^<]*<\/a>/, '');
這應該爲你工作給的例子,但它不會對嵌套標籤的工作,例如,它止跌」與此HTML將不起作用:
<a href="http://www.google.com"><em>Google</em></a>
剛剛評論了John Resig's HTML parser。也許它對你的問題有幫助。
只是爲了澄清,爲了去除鏈接標籤並保持它們之間的所有內容不變,這是一個兩步過程 - 刪除開始標籤,然後刪除結束標籤。
txt.replace(/<a\b[^>]*>/i,"").replace(/<\/a>/i, "");
工作樣品:
<script>
function stripLink(txt) {
return txt.replace(/<a\b[^>]*>/i,"").replace(/<\/a>/i, "");
}
</script>
<p id="strip">
<a href="#">
<em>Here's the text!</em>
</a>
</p>
<p>
<input value="Strip" type="button" onclick="alert(stripLink(document.getElementById('strip').innerHTML))">
</p>
另一個問題是特定於DOM(例如,瀏覽器,jsdom),而這個問題是一般的JavaScript。 – mikemaccana 2015-08-04 16:48:52
@mikemaccana +1。這個問題是關於字符串操作而不是DOM操作。投票取消重複。 – 2015-08-04 18:05:10
準確地說,如果你正在剝離`a`s,你會不會被留下「`檢查出來,很酷,呃?``」 – Jeroen 2015-08-04 18:32:06