JS 转义&反转义 HTML标签、特殊字符

简单好用才是硬道理啊!

业务需要,网上捞了很多过滤HTML标签和特殊字符的贴子,各有千秋吧!

最后自己整理了一个优雅版。

  • 思路:正则匹配并用 replace 函数替换。
  • 优化:划分结构,让资源可配置。
// 抽离成可配置的匹配列表
const matchList  = {
  '&lt;': '<',
  '&gt;': '>',
  '&amp;': '&',
  '&#34;': '"',
  '&quot;': '"',
  '&#39;': "'",
}
// 字符过滤器
const HtmlFilter = (text) => {
  let regStr = '(' + Object.keys(matchList).toString() + ')'
  // ↑ ------------【*提取匹配列表key值*】.【组数转字符串】      
  regStr = regStr.replace(/,/g, ')|(')
  // ↑ 通过匹配将其更新为正则的字符串类型
  const regExp = new RegExp(regStr, 'g')
  // ↑ ------- 字符串 转 正则 方法
  return text.replace(regExp, match => matchList[match])
  // ↑ ------ 替换方法 (正则, 当前key => 返回当前被匹配的key值)
}

export default HtmlFilter
复制代码

测试:&lt;Hello&gt; &#34;World&#34;

结果:<Hello> "World"

结语

这么认真的注释给个赞再走呗!

哦~哈哈哈~

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值