Javascript中的正则表达式以删除链接

Javascript中的正则表达式以删除链接,javascript,regex,Javascript,Regex,我有一个JavaScript字符串,它包含一个a标记,带有href。我想删除所有链接和文本。我知道如何删除链接并保留内部文本,但我想完全删除链接 例如: var s = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?"; 正则表达式根本不擅长解析HTML(请参阅原因)。您需要的是一个HTML解析器。有关使用各种解析器的示例,请参见。如果您只想删除这将删除之间的所有内容。酷吧

我有一个JavaScript字符串,它包含一个
a
标记,带有
href
。我想删除所有链接和文本。我知道如何删除链接并保留内部文本,但我想完全删除链接

例如:

var s = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";

正则表达式根本不擅长解析HTML(请参阅原因)。您需要的是一个HTML解析器。有关使用各种解析器的示例,请参见。

如果您只想删除
这将删除
之间的所有内容。酷吧;
警报(mystr.replace(/]*>(.*?)/i,“”);

这不是很简单,但可能会达到你的目的……

刚刚评论过。也许这对你的问题有帮助。

只是澄清一下,为了去掉链接标签并保持它们之间的所有内容不变,这是一个分两步的过程-删除开始标签,然后删除结束标签

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


上面的示例不会删除所有事件。以下是我的解决方案:

str.replace(/<a\b[^>]*>/gm, '').replace(/<\/a>/gm, '')
str.replace(//]*>/gm',).replace(//gm',)

Duplicate;)这听起来像是老生常谈。有时你不需要真正地将HTML解析成某种数据结构,你只需要以某种方式操纵该字符串。有时,RegExp是有意义的。正确的工具适合正确的工作。顺便说一句,John Resig用JavaScript编写了一个HTML解析器,他在其中使用了一些RegExp。@Ionut G.Stan您总是需要将HTML解析为数据结构,因为这是可靠使用它的唯一方法。正则表达式是解析的一部分,但这些问题总是希望使用一个正则表达式来查找或替换某些内容。这在传统正则表达式中是不可能的(如答案中的一个链接所示)在可能的情况下(例如,添加递归的Perl实现),很难正确使用这些库。有许多库已经为您执行了使用HTML的任务。您应该使用它们,而不是保证失败的正则表达式。我的建议:/]*)?>./ig另一个问题特定于DOM(例如,浏览器,jsdom),而这个问题是一般的JavaScript。@Mikemacana+1。这个问题是关于字符串操作而不是DOM操作。投票取消标记重复。准确地说,如果你去掉
a
的话,你不会被留下“
检查这个。酷吧?
”?
<a href="http://www.google.com"><em>Google</em></a>
mystr = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";
alert(mystr.replace(/<a\b[^>]*>(.*?)<\/a>/i,""));
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>
str.replace(/<a\b[^>]*>/gm, '').replace(/<\/a>/gm, '')