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

如何编写排除特定模式的正则,统计字符串中子串的出现次数

解决方案

问题根源:原有正则没有排除HTML属性中的匹配项,且通过RegExp构造函数传参时,单词边界\b属于正则特殊字符,在字符串中需要转义为\\b才能正常生效。调整逻辑如下:

  • 新增负向后行断言,排除匹配结果前缀为id="、class="的场景
  • 新增正则特殊字符转义逻辑,避免传入的检索词包含正则特殊字符时出现异常

调整后可运行代码:

function countOccurences(str,word){
   // 转义检索词中的正则特殊字符,避免注入问题
   const escapedWord = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
   // (?<!(id|class)\s*=\s*["']) 负向后行断言:跳过id、class属性值内的匹配
   const regex = new RegExp(`(?<!(id|class)\\s*=\\s*["'])\\b${escapedWord}\\b`, "gi");
   console.log((str.match(regex)|| []).length);
}

const testStr = ' test TEST TESTING Test I like testing <h3>TEST</h3> class="test id="test" ';
const asset = "Test";
countOccurences(testStr,asset); // 输出结果为4,符合预期

内容的提问来源于stack exchange,提问作者Souvik Guha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:36:04