сначала потестируй на очевидных больших примерах типа того же "a*" - "a", как оно по времени по сравнению с оригинальным регэкспом. а потом уже пытайся извлечь
как что? вот у тебя есть строчка [n раз по "a"]. для регэкспа "a" у неё n матчей, и твой алгоритм выдаёт регэксп "|".join("a" * n). он очевидно должен довольно медленно работать на больших n и сравнимых по длине строках, если нет мегаоптимизации
Ещё можно про Брендана Айка вспомнить. Я не одобряю позицию, которую он поддержал в 2008, но не вижу причин, как это должно было повлиять на его уход из Mozilla в 2014