Это происходит за счет автоматического обновления при выполнении exec индекса конца последнего поиска lastIndex. Следующий поиск начинается от lastIndex.
Например, следующий скрипт выдает все совпадения:
Выделить все
var myRe = /ab*/g;
var str = "abbcdefabh";
var myArray;
while((myArray = myRe.exec(str)) != null){var msg = "Нашел " + myArray[0] + ". ";
msg += "Следующий поиск начнется с " + myRe.lastIndex;
document.write(msg);
}
Он выведет текст:
Нашел abb. Следующий поиск начнется с 3
Нашел ab. Следующий поиск начнется с 9
Вы можете вызвать exec при неявном определении объекта RegExp:
var matches = /(hello \S+)/.exec('This is a hello world!');
alert(matches[1]);
Это интересно
Первый рекламный баннер появился 27 октября 1994 года на страницах коммерческого он-лайн журнала Hotwired. Его размер составлял 468 на 60 пикселей, и именно этот размер вскоре стал самым популярным размером баннеров. Загадка такого размера довольно банальна: именно столько свободного место было на страницах журнала, чтоб поместить туда рекламу.