В 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.
Я пропустил что-то очевидное? Есть ли какая-то серьезная причина такого поведения?