В консоли Chrome или Firebug:
reg = /ab/g
str = "abc"
reg.exec(str)
==> ["ab"]
reg.exec(str)
==> null
reg.exec(str)
==> ["ab"]
reg.exec(str)
==> null
Является ли exec каким-то образом stateful и зависит от того, что он вернул в предыдущий раз? Или это просто ошибка? Я не могу заставить это случиться все время. Например, если "str" выше было "abc abc", этого не происходит.