Я собираюсь найти все «АА» подстроку в «caaab». Таким образом, я использовал следующее регулярное выражение.
/aa/g
Используя приведенное выражение, я ожидаю , что в JavaScript матч метод возвращает два паттерна корреспондента. Как вы можете видеть, средний, общий «а» вызывает две модели «АА»! Тем не менее, он просто возвращает первый. В чем проблема с Regex, и как я могу это исправить?
let foundArray=d.match(/aa/g);
Используйте предпросмотр
Как уже отмечалось в комментарии, что, как регулярные выражения предназначены для работы:
это точно работает, как это предполагается; когда он потребляет характер, она проходит мимо него
Матчи не перекрываются, это не является ограничением JS это просто как регулярные выражения работы .
Способ обойти это использовать матч нулевой длины , т.е. упреждающий или смотреть-за
Существующий ответ Тима уже делает это, но может быть упрощена следующим образом:
match = "caaab".match(/a(?=a)/g);
console.log(match);
Это нахождение a
следует другой a
(который не возвращается как часть матча). Технически это открытие:
caaab
^ first match, single character
^ second match, single character