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,不是今天。