В Internet Explorer 10 это:
'abcdefghi'.match(/.?e.?/)
оценивает ['def']
, как и следовало ожидать, но в Firefox 21.0 он оценивается как ['abcdefghi']
. (См. этот jsFiddle.) Я получаю такое же неожиданное поведение для некоторых других регулярных выражений, которые начинаются и заканчиваются дополнительным контентом, например /.?e.{0,2}/
и /.{0,2}e.{0,2}/
; однако комментаторы указывают на различные похожие регулярные выражения, такие как /\S?e\S?/
и /(?:.?e.?)/
, которые не затрагиваются. То же самое относится к методу replace
.
Я пропустил что-то очевидное? Есть ли какая-то серьезная причина такого поведения?