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

时间:2017-11-05 18:04:32

标签: javascript pattern-matching match

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

[c**aa**ab]
[ca**aa**b]

我正在使用(caaab'.match(/aa/g)||[]).length,但它只返回1而不是2

如何在javascript中执行此操作。任何解决方案

2 个答案:

答案 0 :(得分:1)

你可以对匹配采取积极的态度,因为它不会消耗缺失的步骤。



console.log(('caaab'.match(/a(?=a)/g) || []).length);




答案 1 :(得分:0)

棘手的部分是模式的重叠。

如果要搜索的模式是固定字符串,而不是正则表达式, 然后你可以反复拨打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.