【问题标题】:Regex to not match tags with attributes?正则表达式与属性不匹配的标签?
【发布时间】:2011-04-12 07:50:34
【问题描述】:

================================================ ============================

编辑: 我使用的是 node.js,因此我无法访问 DOM,并且无法使用 HTML 解析器进行解析(它的效率不足以证明通过如此少量的文本是合理的)

================================================ ============================

首先,我知道。 HTML + 正则表达式 = 失败。但是,我只需要它来删除所有带有属性的标签。

这是我目前所拥有的:

    exports.strip_tags = function(input, allowed) {
      // Strips HTML and PHP tags from a string
   allowed = (((allowed || "") + "")
     .toLowerCase()
     .match(/<[a-z][a-z0-9]*>/g) || [])
     .join('');
      var tags = /<\/?([a-z][a-z0-9]*)\b[^>]>/gi,
      commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
      return input.replace(commentsAndPhpTags, '').replace(tags, function($0, $1){
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
      });
    }

是否有人知道如何更改其中一个正则表达式以使其删除我需要的内容?

澄清一下:这个函数应该去掉所有带属性的标签,只保留允许的标签(不带属性),并输出结果。

【问题讨论】:

  • HTML + 正则表达式 = 失败。说真的,你甚至承认,为什么还要继续努力?有更好的替代方案不调用 Ctulhu
  • @litso 虽然我们在这里讨论的字符串很小,但解析器似乎有点矫枉过正。至多我们在谈论一个段落。
  • @robert,这就是我所指的:P @techwraith,我明白了。虽然不能真正帮助你,但我明白你的意思:)
  • HTML 字符串是小还是大有什么关系?使用解析器 - 或者,如果它真的那么小,手动编辑字符串。

标签: javascript regex node.js html-parsing


【解决方案1】:

将其转换为 XHTML,然后使用 xpath。

HTML->XHTML 工具:

如你所说.... HTML + Regex = 失败

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多