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

JavaScript使用ag-grid时如何实现非精确文本过滤

问题根因

你的过滤代码不生效是两个核心错误导致的:

  • 用==对比字符串和正则表达式对象,根本不会执行正则匹配逻辑,这个判断永远不会返回预期结果
  • 正则写法错误:/.'RTT'./里多余的点、单引号属于无效语法,完全无法实现“包含指定关键词”的匹配逻辑,更不支持多关键词匹配。
正确实现方式

基础包含匹配

要判断字符串是否包含指定关键词,要用正则实例的test()方法执行匹配,单关键词匹配的正确写法如下:

// 匹配所有Genre字段包含RTT的行
return /RTT/.test(node.data.Genre);

多关键词匹配

要支持RTT, RTS, Action这类任意关键词命中的需求,用正则的或逻辑符|拼接所有目标关键词即可:

// Genre包含RTT、RTS、Action任意一个关键词就命中过滤
return /RTT|RTS|Action/.test(node.data.Genre);

如果需要避免关键词片段误匹配(比如不想让RTT匹配到XRTTY这类拼接词),给正则加单词边界符\b:

return /\b(RTT|RTS|Action)\b/.test(node.data.Genre);

如果需要不区分大小写匹配,给正则加i修饰符即可,比如/RTT|RTS|Action/i。

修正后的完整过滤函数

function doesExternalFilterPass(node) {
  switch (status) {
    case 'released':
      return node.data.Status === 'Released';
    case 'early-access':
      return node.data.Status === 'Early access';
    case 'in-development':
      return node.data.Status === 'In development';
    case 'rtt-strategy':
      return /\b(RTT|RTS|Action)\b/.test(node.data.Genre);
    default:
      return true;
  }
}

动态关键词场景适配

如果后续关键词列表是动态变化的,不要手动写正则字面量,用RegExp构造函数动态生成,注意先转义关键词里的正则特殊字符避免报错:

// 动态关键词列表示例
const filterKeywords = ['RTT', 'RTS', 'Action'];
// 正则特殊字符转义方法
const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
// 生成匹配正则,i修饰符表示不区分大小写
const keywordReg = new RegExp(filterKeywords.map(escapeRegExp).join('|'), 'i');

// 过滤逻辑直接调用
return keywordReg.test(node.data.Genre);

内容的提问来源于stack exchange,提问作者Сергей Якушин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:24:23