Проблема: в JS регулярные выражения немного неадекватные. В них не хватает флажков, отличающиеся от PCRE категории символов, нет поддержки Unicode (например, квалификаторов вида \p{Lu}, и, как обычно, в разных браузерах поведение слегка отличается.
Решение: XRegExp + Unicode plug-in. Оно просто работает. Черт, как приятно. Просто берет и работает %)