Вот один из способов подойти к этому. Сначала мы можем записать длину входной строки для последующего использования. Затем выполните глобальную замену регулярного выражения a(?=a)
пустой строкой. Один за другим это заменит каждое вхождение подстроки aa
во входных данных. Затем мы можем сравнить длину выходных данных с входными данными, чтобы выяснить, сколько раз aa
произошло.
var input = "caaab";
var sLen = input.length;
var output = input.replace(/a(?=a)/g, "");
var eLen = output.length;
console.log("There were " + (sLen - eLen) + " occurrences of aa in the input");
Обратите внимание, что трудности, с которыми вы сталкиваетесь, связаны с поведением движка регулярных выражений JavaScript. Если вы замените aa
, он будет потреблять все, и поэтому может потреблять первую букву a
следующего последовательного aa
совпадения. Использование a(?=a)
решает эту проблему, потому что запрос (?=a)
не потребляет следующий a
.