Как кодировать Regex для общего характера между двумя фигурами корреспондентов?

Ретро код:

Я собираюсь найти все «АА» подстроку в «caaab». Таким образом, я использовал следующее регулярное выражение.

/aa/g

Используя приведенное выражение, я ожидаю , что в JavaScript матч метод возвращает два паттерна корреспондента. Как вы можете видеть, средний, общий «а» вызывает две модели «АА»! Тем не менее, он просто возвращает первый. В чем проблема с Regex, и как я могу это исправить?

let foundArray=d.match(/aa/g);

AD7six:

Используйте предпросмотр

Как уже отмечалось в комментарии, что, как регулярные выражения предназначены для работы:

это точно работает, как это предполагается; когда он потребляет характер, она проходит мимо него

Матчи не перекрываются, это не является ограничением JS это просто как регулярные выражения работы .

Способ обойти это использовать матч нулевой длины , т.е. упреждающий или смотреть-за

Существующий ответ Тима уже делает это, но может быть упрощена следующим образом:

match = "caaab".match(/a(?=a)/g);
console.log(match);

Это нахождение aследует другой a(который не возвращается как часть матча). Технически это открытие:

caaab
 ^ first match, single character
  ^ second match, single character

рекомендация

отhttp://43.154.161.224:23101/article/api/json?id=13432&siteId=1