Почему символы Ё и Й дробятся надвое?
В unicode символ может быть представлен в виде одного или двух символов в зависимости от вида нормализации: habrahabr.ru/post/45489
Можете попробовать использовать метод normalize():'ё'.normalize('NFC').length == 1 - true
тогда как'ё'.normalize('NFD').length == 2 - true
https://jsfiddle.net/hvh4h9j2/
ничего не подробилось.
Как вариант, еще так https://jsfiddle.net/0r9t1h6o/1/