我有一个字符串caaab
。我想计算此字符串中模式aa
的总出现次数。它应该是两个。
[c**aa**ab]
[ca**aa**b]
我正在使用(caaab'.match(/aa/g)||[]).length
,但它只返回1
而不是2
。
如何在javascript中执行此操作。任何解决方案
答案 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.