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

如何编写正则忽略大小写与特殊字符实现表单关键词全变体匹配

实现思路

  • 新增重音字符归一化函数,将所有带重音的特殊字符转换为对应的无重音基础字符
  • 关键词数组仅需保留无重音的小写基础关键词,无需手动枚举所有变体
  • 匹配前先将用户输入的内容统一做「去重音+转小写」处理,再和基础关键词匹配即可覆盖所有大小写、重音变体场景

修改后完整代码

<script>
new BulldeskIntegration({
  token: '123456',
  map: {
    'form_fields[identifier]': 'identifier',
    'form_fields[name]': 'name',
    'form_fields[email]': 'email',
    'form_fields[phone]': 'phone',
    'form_fields[message]': 'message',
  },
  mapCallback: function (fields) {
    // 仅保留基础无重音小写关键词即可,无需枚举所有变体
    const keywords = ['curriculo'];
    
    // 重音字符归一化辅助函数
    const removeAccents = (str) => {
      return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
    };

    const { value } = document.querySelector('#form-field-message');
    if (value) {
      // 先对用户输入做归一化处理:去重音+转小写
      const normalizedInput = removeAccents(value).toLowerCase();
      // 校验是否包含任意目标关键词
      const hasKeyword = keywords.some(keyword => normalizedInput.includes(keyword));
      if (hasKeyword) {
        jQuery('#form-field-conversion').attr('value', 'nok');
        return [];
      }
    }
    return fields;
  }
});
</script>

调整说明

  1. 替换了原来需要枚举所有变体的words数组,后续新增关键词只需要添加无重音小写形式即可,维护成本极低
  2. 新增的removeAccents函数通过Unicode标准化操作,将所有带重音的字符(比如í、á、ó等)统一转换为对应的无重音基础字符
  3. 匹配前先把用户输入的内容做归一化处理,不管用户输入的是大小写混合还是带重音的变体,都会统一转为无重音小写形式再匹配,完全覆盖所有变体场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 14:51:01