В книге "JavaScript: The Good Parts" метод string.match(regexp)
объясняется следующим образом:
Метод match сопоставляет строку и регулярное выражение. Как это зависит ли это от флага g. Если нет флага g, то результат вызова строки .match(regexp) аналогичен вызову регулярное выражение .exec(строка).Однако, если регулярное выражение имеет флаг g, то оно создает массив всех совпадений, но исключает захват группы:
Затем в книге приводится пример кода:
var text = '<html><body bgcolor=linen><p>This is <b>bold<\/b>!<\/p><\/body><\/html>';
var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
var a, i;
a = text.match(tags);
for (i = 0; i < a.length; i += 1) {
document.writeln(('// [' + i + '] ' + a[i]).entityify());
}
// The result is
// [0] <html>
// [1] <body bgcolor=linen>
// [2] <p>
// [3] This is
// [4] <b>
// [5] bold
// [6] </b>
// [7] !
// [8] </p>
// [9] </body>
// [10] </html>
Мой вопрос в том, что я не могу понять, "но исключает группы захвата".
В приведенном выше примере кода html
в