Допустим, есть строка testestest. Если применить к ней регулярное выражение /(test)/g, то результат будет таков: testestest. Как сделать так, чтобы регулярное выражение захватывало и тот промежуточный testestest? Как это правильно называется?
Воспользуйтесь regexp.exec(str)
Если флаг g есть, то вызов regexp.exec возвращает первое совпадение и запоминает его позицию в свойстве regexp.lastIndex. Последующий поиск он начнёт уже с этой позиции. Если совпадений не найдено, то сбрасывает regexp.lastIndex в ноль.
let s = "testestest";
let r = /test/g;
let m;
while (m = r.exec(s)) {
console.log("Match: " + m[0] + ", pos: " + m.index);
r.lastIndex = m.index+1;
}
learn.javascript.ru: Методы RegExp и String
var res = []
"testestest".replace(/(?=(test))/g, (m, g) => res.push(g))
console.log(res)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей