You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular/JS中如何用单个正则按匹配内容执行对应替换

Angular/JS 应用场景

不需要链式写一堆replace,也不用搞复杂的捕获组,用正则多选分支搭配替换映射表+replace回调,一次调用就能搞定所有替换。

实现代码

// 替换规则映射表,key是要匹配的内容,value是替换后的结果,后续加规则直接在这里加键值对
const entityMap = {
  '&lt;': '<',
  '&gt;': '>',
  '&quot;': '"',
  '&amp;': '&',
  '&apos;': "'"
};

// 一次replace完成全部替换,注意正则不要用引号包裹,直接传字面量
const decodedStr = input.replace(/&lt;|&gt;|&quot;|&amp;|&apos;/gm, match => entityMap[match] ?? match);

说明

  • replace方法第二个参数支持传回调函数,正则每命中一个匹配项,就会执行一次回调,回调第一个参数就是当前实际匹配到的字符串,直接返回对应替换值即可。
  • 这种写法只会遍历原字符串一次,比链式调用多次replace(每次调用都要全量遍历一遍字符串)性能更好,代码也更简洁易维护。
  • 注意不要把正则放在引号里:JS里/xxx/gm是原生正则字面量,套了引号就变成普通字符串匹配,g(全局匹配)、m(多行匹配)标记都会失效。
  • 代码里的?? match是兜底逻辑,如果命中了映射表里没配置的内容,就原样返回,不会出现返回undefined的问题。

如果你要处理的是双重转义的实体,比如把&amp;lt;替换成&lt;,只需要改entityMap里的键值对应关系就行,核心逻辑不用动。


内容的提问来源于stack exchange,提问作者RooksStrife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:27:21