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

标签 javascript regex node.js html-parsing

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

编辑: 我使用的是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 : '';
      });
    }

有人知道如何更改这些正则表达式之一以使其删除我需要的内容吗?

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

最佳答案

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

HTML->XHTML 工具:

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

关于javascript - 正则表达式不匹配标签与属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3711809/

相关文章:

regex - 如何根据 Bash 版本/功能编写条件代码?

node.js - 如何检查元素是否在剧作家的文档中?

javascript - select/option 元素的默认 "search"行为是什么?

javascript - 来自表达式的 Angular 6 错误调用函数

c# - 从 aspx 中的 javascript 调用代码隐藏函数

javascript - JS 上的正则表达式未替换

javascript - Angular,将来自组件的输入注入(inject)我的标题

regex - sed 和正则表达式 : unexpected replacement pattern

node.js - 如何根据现有的 Mongoose 查询检查单个文档?

javascript - 访问 jade 循环内的 Controller 变量