Кажется, прошла незамеченной хорошая новость.
Разработчики V8 активно взялись за добавление lookbehind assertions в регулярные выражения JavaScript.
Несмотря на уверения в последнем абзаце статьи, я не смог проверить эту возможность в Google Chrome Canary.
Но.
В этом месяце выходит шестая версия Node.js, основанная на V8 5.0, и в ней уже можно включить поддержку lookbehind при помощи флага командной строки --harmony_regexp_lookbehind.
Если совсем не терпится, можно потестировать на последней ночной сборке шестой версии (она, правда, старовата, месячной давности, но в неё включена V8 4.9, где как раз появилась поддержка lookbehind). Для Windows можно даже просто скачать портабельные бинарники из папок win-x64 или win-x86.
Я так протестировал положительный и отрицательный варианты на примере из статьи:
Стоит обратить внимание на две особенности, упомянутые авторами:
1. В отличие от Perl, оба варианта lookbehind поддерживают выражения переменной длины.
2. Разработчики пошли по пути .NET и в другой особенности — установлен непривычный (для начала) порядок запоминания подвыражений и внутренних ссылок.
Автор: vmb