当前位置:首页 > VUE

vue实现敏感词屏蔽

2026-01-22 18:42:50VUE

Vue 实现敏感词屏蔽的方法

敏感词屏蔽是前端开发中常见的需求,可以通过多种方式在 Vue 中实现。以下是几种常见的方法:

使用计算属性过滤敏感词

通过计算属性动态过滤敏感内容,结合正则表达式替换敏感词:

export default {
  data() {
    return {
      inputText: '',
      sensitiveWords: ['敏感词1', '敏感词2', 'xxx']
    }
  },
  computed: {
    filteredText() {
      let result = this.inputText
      this.sensitiveWords.forEach(word => {
        const regex = new RegExp(word, 'gi')
        result = result.replace(regex, '*')
      })
      return result
    }
  }
}

使用自定义指令实现输入时过滤

创建自定义指令在输入时实时过滤敏感词:

Vue.directive('filter', {
  bind(el, binding) {
    el.addEventListener('input', (e) => {
      const words = binding.value || ['默认敏感词']
      let text = e.target.value
      words.forEach(word => {
        const regex = new RegExp(word, 'gi')
        text = text.replace(regex, '*')
      })
      e.target.value = text
    })
  }
})

使用过滤器全局处理

创建全局过滤器处理敏感词:

Vue.filter('filterWords', function(value) {
  if (!value) return ''
  const sensitiveWords = ['敏感词1', '敏感词2']
  let result = value
  sensitiveWords.forEach(word => {
    const regex = new RegExp(word, 'gi')
    result = result.replace(regex, '*')
  })
  return result
})

结合后端API验证

对于更严格的敏感词验证,可以结合后端API:

methods: {
  async checkSensitiveContent(text) {
    try {
      const response = await axios.post('/api/check-sensitive', { text })
      return response.data.cleanText
    } catch (error) {
      console.error('敏感词检查失败', error)
      return text
    }
  }
}

使用第三方库

考虑使用成熟的敏感词过滤库如bad-words

import Filter from 'bad-words'
const filter = new Filter()

export default {
  methods: {
    cleanText(text) {
      return filter.clean(text)
    }
  }
}

实现时的注意事项

敏感词列表应定期更新,确保覆盖新的敏感词汇

对于中文敏感词处理,需要考虑分词和模糊匹配

在前端实现的同时,后端也应进行验证,防止绕过前端检查

敏感词替换符号可以根据需求自定义,如*、※※※等

对于大量文本处理,考虑性能优化,避免频繁的正则匹配

vue实现敏感词屏蔽

标签: 屏蔽敏感
分享给朋友: