【问题标题】:Javascript Regex: Get HTML TagsJavascript 正则表达式:获取 HTML 标签
【发布时间】:2011-04-03 18:44:47
【问题描述】:

我做了这个正则表达式:

/\<+[a-zA-Z0-9\=\"\s]+\>+.+\<\/+[a-zA-Z0-9]+\>/gi

匹配完整的 html 标签,例如:

<p>this is a paragraph</p>

但问题在于它将所有元素匹配为一个匹配

<div><p>this is a paragraph</p></div>

但我想将所有 HTML 元素分开。

注意:HTML 标记在字符串中,不在 DOM 中。

在正则表达式解决方案之前,我尝试创建一个新的div 元素,并添加了字符串,因为它是 innerHTML。但是不能正常工作我真的不知道为什么......

所以我正在寻找一种解决这一匹配问题的 REGEX 解决方案。

谢谢

【问题讨论】:

  • 显示您的innerHTML 尝试。
  • 我以为有人会问我 :D 但我真的很好奇我目前的问题是如何解决的 :)
  • 您无法解析 HTML with regex。通过innerHTML(或一些类似的机制)使用浏览器现有的解析器其实是正确的解决方案。

标签: javascript html regex string tags


【解决方案1】:

+[^&lt;]+ 替换内部的+.+ 会阻止它匹配整个字符串,但是正则表达式不是处理包含嵌套组件的字符串的正确选择。为此,您应该使用解析器。

正则表达式只是这里工作的错误工具。

【讨论】:

    【解决方案2】:

    正则表达式不适合处理 html。正如您提到的,HTML 不是 DOM 的一部分

    注意:HTML 标签是一个字符串 不在 DOM 中。

    您可以使用 JQuery 从 HTML 构建对象并使用 DOM 选择器/遍历来处理它:

    $(myHTMLString).find('p')...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多