Это происходит за счет автоматического обновления при выполнении 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]);
Дежурная шутка
Вообще-то, доступ в Интернет по паспорту - это полумера.
В Интернет следует пускать только по оплаченной путёвке в Крым!