matchAll() и match() оба используются для регулярных выражений, но ведут себя по-разному в том, как возвращают результаты и обрабатывают capture groups.
match() с глобальным флагом возвращает плоский массив совпадений, но теряет всю информацию о capture groupsmatchAll() возвращает итератор всех совпадений, где каждый результат включает полную информацию о capture groupsmatch() без глобального флага возвращает одно совпадение с capture groups, но останавливается на первом результатеmatchAll(), должно включать флаг g (глобальный), иначе выбросится TypeErrorconst str = "cat bat";
const regex = /([a-z])at/g;
// match() теряет capture groups
str.match(regex); // ["cat", "bat"]
// matchAll() сохраняет capture groups
const results = [...str.matchAll(regex)];
results[0][1]; // "c"
results[1][1]; // "b"
match(), когда тебе нужны только строки совпадений и тебя не волнуют capture groupsmatchAll(), когда тебе нужен доступ к capture groups, индексам совпадений или ты хочешь обрабатывать совпадения по одному с помощью итератораМетод match() с глобальным флагом сохраняет информацию о группах захвата в возвращаемом массиве, точно так же как это делает matchAll().
Новый — ещё не проверен сообществом
Вы