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

如何用正则统计JS字符串中前后至少一侧带空格的指定单词次数

问题解决思路

你原来的正则使用单词边界\b匹配,会把符号、下划线前后的test都判定为单词边界命中,所以出现多余匹配结果。调整方案的核心是直接用空格/字符串首尾的环视判断来匹配符合规则的目标单词。

调整后的实现代码
function countOccurences(str, word) {
    // 先转义word中的正则特殊字符,避免特殊字符引发匹配错误
    const escapedWord = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
    // 正则逻辑:匹配「前面是空格/开头」或「后面是空格/结尾」的目标单词
    const regex = new RegExp(`(?<=\\s|^)${escapedWord}|${escapedWord}(?=\\s|$)`, 'gi')
    return (str.match(regex) || []).length
}

// 测试用例
var sample = " test-abc -test# @test _test hello-test@ test test "
console.log(countOccurences(sample, 'test')) // 输出5,符合预期
正则逻辑说明
  • (?<=\\s|^):反向环视,判定目标单词前面是空格,或者是字符串开头位置
  • (?=\\s|$):正向环视,判定目标单词后面是空格,或者是字符串结尾位置
  • 两个分支用|连接,只要满足其中一个条件就命中匹配,完全符合你要求的「前带空格/后带空格/前后都带空格」的统计规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:01