使用JavaScript字符串方法escapeHtml可安全转义HTML实体,优先处理&再依次转义<、>、"、',通过正则与映射对象实现纯字符串操作,不依赖DOM。

直接用 JavaScript 字符串方法做 HTML 实体转义,核心是把 <、>、&、"、' 这几个关键字符替换成对应实体。原生字符串方法(如 replace())配合正则就能搞定,不需要引入外部库。
用 replace() 配合正则逐个替换
最常用也最直观的方式:对每个危险字符调用 replace(),用全局正则替换所有出现位置。
注意必须按顺序处理 & 优先,否则后续替换可能把新生成的 & 再次误转:
-
&→&(最先做) -
<→ -
>→> -
"→" -
'→'(部分老浏览器需要,现代可选)
写成可复用的函数
封装成函数更安全、易复用。推荐使用带 g 标志的正则,并用对象映射提升可读性:
立即学习“前端免费学习笔记(深入)”;
function escapeHtml(str) {
if (typeof str !== 'string') return str;
const map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return str.replace(/[&<>"']/g, char => map[char]);
}
调用示例:escapeHtml('A & B <script>alert(1)</script>') → "A & B <script>alert(1)</script>"
注意单引号和双引号的上下文差异
如果字符串将被插入到 HTML 属性中(比如 value="..."),双引号必须转义;若用于 value='...',则单引号更重要。实际项目中建议统一转义两者,避免动态拼接出错。
另外,' 在 XML 和旧版 IE 中必要,HTML5 中多数场景可省略,但保留更稳妥。
不推荐只靠 innerHTML 或 textContent 的“取巧”方式
有人用 document.createElement('div').textContent = str; return div.innerHTML,这本质是借 DOM API 转义,不是字符串方法,且有性能开销、依赖 DOM 环境,服务端(Node.js)或无 DOM 场景不可用。题目明确要求“字符串方法”,应坚持纯字符串操作。



















