如何从包含文本的html字符串中删除所有内容,但保留所有<a> tags and their data intact using regex?</a>

时间:2011-07-13 10:37:42

标签: html regex string

首先,我想对比我更有经验的人说,必须在正则表达式中完成。由于奇怪的情况,无法访问DOM解析器。

所以我有一个完整的HTML / XHTML字符串,除了链接之外,我想删除它的所有内容。基本上只有<a>标签很重要。我需要标签来完整地保存他们的信息,所以href,target,class等等,如果它是一个自终止标签或它有一个单独的结束标签,它应该工作。即<a /><a></a>

感谢任何帮助人员!

3 个答案:

答案 0 :(得分:2)

当然,您可以在Firefox扩展中解析HTML。请查看HTML to DOM,尤其是second和第三种方式。

它可能看起来更复杂,但它比正则表达式更不易出错。

只要您引用了已解析的内容,您只需致电ref.getElementsByTagName('a')即可完成。

答案 1 :(得分:1)

result = subject.match(/<a[^<>]*?(?:\/>|>(?:(?!<\/a>).)*<\/a>)/ig);

为您提供HTML源代码中所有<a>标记的数组(即使是非自动关闭的标记,这些标记也是非法的,但您明确要求这些标记)。这还够吗?

<强>解释

<a         # Match <a
[^<>]*?    # Match any characters besides angle brackets, as few as possible
(?:        # Now either match
 />        # /> (self-closed tag)
|          # or 
 >         # a closing angle bracket
 (?:       # followed by...
  (?!</a>) # (if we're not at the closing tag)
  .        # any character
 )*        # any number of times
 </a>      # until the closing tag
)

答案 2 :(得分:0)

正则表达式看起来像这样

/\<\a.*[\/]{0,1}>(.*<\/\a>){0,1}/gm