我有一个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