Я знаю, что есть несколько несоответствий в регулярном выражении / lastIndex
, но это новое для меня!
Ожидаемое поведение : Создание нового регулярного выражения (с литералом / конструктором), очевидно, создаст новый объект RegExp с свойством lastIndex
, установленным в ноль.
Фактическое поведение : (в FF, Chrome): свойство lastIndex, похоже, сохраняется в течение нескольких созданий RegExp.
1017 * Е.Г. *
function foo(s) {
// A *NEW* regular expression
// is created on each call of foo():
var regex = /ABC/g;
document.write( regex.lastIndex + '<br/>' );
// regex.test() updates lastIndex property
regex.test(s);
// This is where the regex's life should end...
// (Why does it persist?)
}
foo('ABC');
foo('ABCABC');
foo('ABCABCABC');
Смотрите здесь: http://jsbin.com/otoze
Новый объект RegExp создается при каждом вызове функции (верно?), Так почему в документ записывается следующее? -
0
3
6
???
Обратите внимание, что эта странность, кажется, происходит в FF (3) и Chrome (2), но, как ни странно, не в IE.
Это ожидаемое поведение, IE понимает это неправильно или правильно? Это известная ошибка?
РЕДАКТИРОВАТЬ: это не происходит при создании экземпляра регулярного выражения с конструктором вместо литерала. Например. new RegExp('ABC','g');
... Тем не менее, литерал должен (теоретически) работать, верно?