Объясните кто-нибудь как так:
var f = function(str) {
var re = new RegExp('[0-9]', 'g');
alert(re.exec(str));
};
f('as012as0');// 0
f('as012as01');// 0
f('as012as012');// 0
Здесь все верно: в запущенной функции создается RegExp со свойством
lastIndex == 0 , при вызове exec lastIndex смещается, функция завершается, при повторном вызове lastIndex у нового RegExp-а снова равен нулю.
А вот что происходит здесь:
var f = function(str) {
var re = /[0-9]/g;
alert(re.exec(str));
};
f('as012as0');// 0
f('as012as01');// 1
f('as012as012');// 2
?
Такое ощущение, что регулярка живет дольше, чем положено.
upd: все кроме IE .