Javascript 正在计算字符串中模式出现的总数

Javascript 正在计算字符串中模式出现的总数,javascript,pattern-matching,match,Javascript,Pattern Matching,Match,我有一个字符串caaab。我想计算此字符串中模式aa的出现总数。应该是两个 [c**aa**ab] [ca**aa**b] 我使用的是(caaab.match(/aa/g)| |[])。length但它只返回1而不是2 如何在javascript中实现这一点。任何解决方案 您可以对匹配采取积极的展望,因为它不会消耗丢失的步骤 console.log(('caaab'.match(/a(?=a)/g)| |[]).length)棘手的部分是模式的重叠 如果要搜索的模式是固定字符串,而不是正则表

我有一个字符串
caaab
。我想计算此字符串中模式
aa
的出现总数。应该是两个

[c**aa**ab]
[ca**aa**b]
我使用的是
(caaab.match(/aa/g)| |[])。length
但它只返回
1
而不是
2


如何在javascript中实现这一点。任何解决方案

您可以对匹配采取积极的展望,因为它不会消耗丢失的步骤


console.log(('caaab'.match(/a(?=a)/g)| |[]).length)棘手的部分是模式的重叠

如果要搜索的模式是固定字符串,而不是正则表达式, 然后您可以反复调用
indexOf
, 在每次匹配后更新开始索引

var count = function (s, t) {
  var count = 0, index = 0;
  while (true) {
    index = s.indexOf(t, index);
    if (index === -1) break;
    count++;
    index++;
  }
  return count;
}

在这个实现中,
count('caaab','aa')
将返回2。

那么您尝试了什么?您还可以使用积极的look behind
(?@S.Walker,实际上不是在javascript中,因为它没有实现。javascript不支持积极的look behind?@S.Walker,jes,不是今天。