【问题标题】:Regex to remove html tags with certain class from string [duplicate]正则表达式从字符串中删除具有特定类的html标签[重复]
【发布时间】:2015-03-11 00:57:40
【问题描述】:

我需要从字符串中删除所有具有特定类的a 标签并将它们存储在另一个字符串中。例如:

var str = 'this is a string <a href="#" class="link">link</a>';

我想用class="link" 剥离a 标签并将其保存在str2 中。

【问题讨论】:

  • 你想要多少剩余的str? 'this is a string ''this is a string link'?
  • 您是如何尝试自己解决这个问题的?首先向我们展示您的尝试。

标签: javascript html regex


【解决方案1】:
var re = /(<a(?: \w+="[^"]+")* class="link"(?: \w+="[^"]+")*>([^<]*)<\/a>)/g;
var str = 'this is a string <a href="#" class="link">link</a> <a class="link">link2</a>';

var links = [] # array of <a> tags
for (var i in str.match(re)) {
    links.push(str.match(re)[i])
}

var embedded_strings = [] # array of strings inside <a> tags
for (var i in links) {
    embedded_strings.push(links[i].replace(re, "$2"))
}

结果:

links = ['<a href="#" class="link">link</a>', '<a class="link">link2</a>']
embedded_strings = ['link', 'link2']

此答案假定= 周围没有空格,并且您将专门使用双引号。

【讨论】:

  • 你能帮我做最后一件事吗 - 这很有效,但只会从字符串中删除第一个带有类 'link' 的 'a' 标签并忽略其余的 'a' 标签与“链接”类。如何为此执行全局删除。
  • @user2855509 编辑了我的答案。我确信有一个更优雅的解决方案,但这个解决方案可以解决问题。
  • 该解决方案有效,但在我在 href 属性中有除“#”之外的任何内容的情况下无效。检查这个小提琴 - jsfiddle.net/vmc01ntu/1 如果我把'#'放在href中,它工作正常。
  • @user2855509 编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2012-01-26
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多