strip_tags
是 JavaScript 中用于移除字符串中的 HTML 标签的函数。这个函数通常用于清理用户输入,防止跨站脚本攻击(XSS),或者在处理 HTML 内容时提取纯文本。
strip_tags
函数的基本用法如下:
let text = "<p>Hello <b>World</b>!</p>";
let strippedText = text.replace(/<[^>]*>/g, '');
console.log(strippedText); // 输出: Hello World!
在这个例子中,正则表达式 <[^>]*>
用于匹配所有的 HTML 标签,并将它们替换为空字符串,从而移除这些标签。
有时候,HTML 中可能包含特殊字符或编码,导致简单的正则表达式无法完全匹配和移除所有标签。
解决方法:使用更复杂的正则表达式或专门的 HTML 解析库(如 parse5
或 jsdom
)来处理这种情况。
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
let text = "<p>Hello <b>World</b>!</p>";
let dom = new JSDOM(text);
let strippedText = dom.window.document.body.textContent;
console.log(strippedText); // 输出: Hello World!
在某些情况下,可能希望保留一些特定的标签,而不是移除所有标签。
解决方法:修改正则表达式,使其只匹配需要移除的标签。
let text = "<p>Hello <b>World</b>!</p>";
let allowedTags = ['b']; // 允许保留的标签列表
let strippedText = text.replace(new RegExp(`<(${allowedTags.join('|')})[^>]*>.*?</\\1>|<[^>]+>`, 'g'), '');
console.log(strippedText); // 输出: Hello World!
在这个例子中,只有不在 allowedTags
列表中的标签会被移除。
以下是一个完整的示例,展示了如何使用 strip_tags
函数以及如何处理特殊情况:
function stripTags(html, allowedTags = []) {
let tagsPattern = new RegExp(`<(${allowedTags.join('|')})[^>]*>.*?</\\1>|<[^>]+>`, 'g');
return html.replace(tagsPattern, '');
}
let text = "<p>Hello <b>World</b>!</p>";
let strippedText = stripTags(text);
console.log(strippedText); // 输出: Hello World!
let textWithAllowedTags = "<p>Hello <b>World</b>!</p>";
let allowedTags = ['b'];
let strippedTextWithAllowedTags = stripTags(textWithAllowedTags, allowedTags);
console.log(strippedTextWithAllowedTags); // 输出: Hello <b>World</b>!
通过这种方式,可以灵活地控制哪些标签需要保留,哪些需要移除。
领取专属 10元无门槛券
手把手带您无忧上云