================================================== =========================
编辑: 我使用的是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/