Показать сообщение отдельно
  #1 (permalink)  
Старый 12.01.2010, 05:16
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

RegExp создается с lastIndex > 0 .
Объясните кто-нибудь как так:

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 .

Последний раз редактировалось Riim, 12.01.2010 в 05:40.
Ответить с цитированием