删除<a> tag using javascript regexp?</a>中的嵌套代码

时间:2013-12-02 09:15:21

标签: javascript html regex

此功能会删除javascript中的所有<a>标记

replace(/<a\b[^>]*>(.*?)<\/a>/i,"")

但它不会删除嵌套标签,例如它不适用于此标签

<a href="http://feeds.feedburner.com/~ff/ardroid?a=AqChTdtuXxo:V799F6z5h7k:qj6IDK7rITs">
   <img src="http://feeds.feedburner.com/~ff/ardroid?d=qj6IDK7rITs" border="0">
</a>

我想要另一个正则表达式,它将消除所有<a>标记及其所有内容

3 个答案:

答案 0 :(得分:2)

建议使用基于dom的方法来处理html

使用jQuery:

$('a').remove();

虽然:...

这可能会在95%的时间内起作用

/<a[\s\S]*?<\/a>/

答案 1 :(得分:0)

您无法准确地使用正则表达式处理HTML,因此您应该使用DOM。

http://jsfiddle.net/EMd2e/

$('a').contents().remove();

答案 2 :(得分:0)

正如其他人所指出的那样,使用regexp解析HTML并不是一个好主意,但你的正则表达式需要一些小修改才能做你需要的事情

var s = '<a href="http://feeds.feedburner.com/~ff/ardroid?a=AqChTdtuXxo:V799F6z5h7k:qj6IDK7rITs">\n\
   <img src="http://feeds.feedburner.com/~ff/ardroid?d=qj6IDK7rITs" border="0">\n\
</a><span></span>';
s.replace(/<a\b[^>]*>([^]*)<\/a>/im,"") // result will be <span></span>

简单地说,您需要将其与多行字符串匹配,可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp找到更多信息