В Opera, IE, Safari, Chrome всё прекрасно работает, проблема возникала только в Firefox. В той статье на хабре regexp объект создавался в глобальной области видимости, поэтому естественно повторный вызов функции натыкался на предыдущий результат, хранимый в объекте. Но у меня он создавался внутри функции, по идее повторный вызов функции должен инициировать по новой все внутренние переменные, так и происходит со всеми переменными кроме regexp. Баг ФФ в том, что если функция вызвана рекурсивно до завершения предыдущей переменная ссылается на один и тот же объект, и она не только наследует lastIndex, но и возвращает тот же массив с результатами, от предыдущего вызова. Если вызывать её не напрямую, а через setTimeout проблем нет.
Тем не менее объявление через new RegExp решает эту проблему.
|