正则表达式不匹配标签与属性?

时间:2010-09-14 18:28:32

标签: javascript regex node.js html-parsing

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

修改 我正在使用node.js,因此我无权访问DOM,并且使用HTML解析器进行解析不是一种选择(它不足以证明通过如此少量的文本)

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

首先,我知道。 HTML + Regex =失败。但是,我只需要删除所有带属性的标签。

这是我到目前为止所拥有的:

    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 : '';
      });
    }

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

澄清:此函数应删除所有带属性的标记,仅保留允许的标记(不含属性),并输出结果。

1 个答案:

答案 0 :(得分:1)

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

HTML-&gt; XHTML工具:

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