Когда я запустил
/^(.+)+Q$/.test("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
в Chrome или IE, требуется ~ 10 секунд. (Firefox может оценить его почти мгновенно.)
Почему так долго? (И почему/как Firefox может сделать это так быстро?)
(Конечно, я никогда не буду запускать это конкретное регулярное выражение, но я сталкиваюсь с аналогичной проблемой с URL-адресом regex в http://daringfireball.net/2010/07/improved_regex_for_matching_urls, и, похоже, сводятся к этому, т.е. есть определенные URL-адреса, которые заставят браузер заблокировать)
Например:
var re = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»""‘’]))/i;
re.test("http://google.com/?q=(AAAAAAAAAAAAAAAAAAAAAAAAAAAAA")