• 前端匹配敏感词并替换


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

    方案:后端提供敏感词库,前端使用正则动态匹配敏感词(使用了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是个好东西!

  • 相关阅读:
    原来真的不会用指针[*p++]
    关于arm-linux-gcc的安装与配置
    Linux串口编程のtermios 结构
    alarm函数可以定时
    FFMPEG视音频解码【一】
    随机数组的生成方法
    .net 容器类
    (转)Kinect背景移除支持多人
    (转)MFC美化
    (转)美化Button必备
  • 原文地址:https://www.cnblogs.com/mjwblog/p/16314125.html
Copyright © 2020-2023  润新知