Когда вы используете захват скобок в своем регулярном выражении, он добавляет элемент в массив возвращаемых результатов для общего совпадения и каждого набора скобок.
matchArr[0]
- это все, что было найдено.
matchArr[1]
- это то, что соответствует первому набору скобок захвата
matchArr[2]
- это то, что соответствует второму набору скобок захвата и т. Д.
Итак, в вашем регулярном выражении/^([^#]+)/
, нет никакой разницы между matchArr[0]
и matchArr[1]
, потому что все, что соответствует, находится в скобках захвата.
Если вы сделали это:
var str = 'some string';
var rexp = /^some([^#]+)/;
var matchArr = str.match(rexp);
Вы обнаружите, что:
matchArr[0] == "some string";
matchArr[1] == " string";
потому что есть части совпадения, которых нет в скобках для захвата.
Или, если вы сделали это:
var str = 'some string';
var rexp = /^(some)([^#]+)/;
var matchArr = str.match(rexp);
Вы обнаружите, что:
matchArr[0] == "some string";
matchArr[1] == "some"
matchArr[2] == " string";