• 前端匹配敏感词并替换


    背景:项目表单数据需要动态校验敏感词,实时提示敏感词是否存在。

    方案:后端提供敏感词库,前端使用正则动态匹配敏感词(使用了loadsh库)

    一、先说正则

    1 // 动态匹配敏感词的正则
    2 getSensitiveWordRegExp(word) {
    3     return new RegExp("(\\b"+_.escapeRegExp(word)+"\\b)", 'gi')
    4 },

    以上代码中,

      word: 代表一个敏感词

      _.escapeRegExp():lodash的escapeRegExp方法,将str中的特殊字符进行转义

      \\b: 正则元字符,匹配单词边界

      g: 正则修饰符,全局匹配

      i: 正则修饰符,忽略大小写

    二、调用正则过滤敏感词

    1 // 过滤当前字符串中存在的敏感词
    2 filterSensitiveWords(sensitiveList, str) {
    3     const resultList = sensitiveList.filter(ele => {
    4         const reg = getSensitiveWordRegExp(ele.word)
    5         return reg.test(str)
    6     })
    7     return resultList
    8 }

      sensitiveList: 敏感词库

      str: 被匹配的字符串

    三、调用正则替换敏感词

    1 // 替换敏感词
    2 replaceSensitiveWord(str, sensitiveWord, newWord) {
    3     let reg = getSensitiveWordRegExp(sensitiveWord)
    4 return str.replace(reg, newWord)
    5 }

      str: 被替换的字符串

      sensitiveWord: 敏感词

      newWord: 替换敏感词的字符

    总结:做这个需求,唯一卡住的点是,对多个敏感词的特殊字符做转义。lodash有对应的方法escapeRegExp,解决了这个问题。lodash是个好东西!

  • 相关阅读:
    Django视图之ORM数据库查询操作API
    Django视图之ORM更改数据库连接——配置MySQL库
    TLPI读书笔记第2章-基本概念2
    TLPI读书笔记第2章-基本概念1
    linux防火墙常用命令
    linux配置yum软件仓库
    linux进程管理
    linux文件权限
    linux用yum安装软件
    linux磁盘划分
  • 原文地址:https://www.cnblogs.com/mjwblog/p/16314125.html
Copyright © 2020-2023  润新知