Транслит

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Есть функция заменяющая английские символы на русские (На случай, если пользователь пишет русское слово в английской раскладке) :
Код:
function translit (word){
    word = word.toLowerCase();
    var eng = ['f', ',', '<', 'd', 'u', 'l', 't', ';', ':', 'p', 'b', 'q', 'r', 'k', 'v', 'y', 'j', 'g', 'h', 'c', 'n', 'e', 'a', '[', '{', 'w', 'x', 'i', 'o', '\'', '"', '.', '>', 'z'];
    var rus = ['а', 'б', 'б', 'в', 'г', 'д', 'е', 'ж', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'х', 'ц', 'ч', 'ш', 'щ', 'э', 'э', 'ю', 'ю', 'я'];
 
    for(var i=0; i<eng.length; i++) {
        var RE = new RegExp (eng[i], 'gi');
        word = word.replace(RE, rus[i]);
    }

    return word;
}


Но почему-то не работает

Так:
Код:
var RE = new RegExp (eng[i], 'gi');
word = word.replace(RE, rus[i]);

Когда доходит до "]" выводит ошибку:
Код:
SyntaxError: Invalid regular expression: /[/: Unterminated character class

Так:
Код:
word = word.replace(eng[i], rus[i]);
Вообще ничего не заменяет

UPD

Всё, додумался:
Код:
function translit (word){
    word = word.toLowerCase();
    var eng = ['f', '\\,', '\\<', 'd', 'u', 'l', 't', '\\;', '\\:', 'p', 'b', 'q', 'r', 'k', 'v', 'y', 'j', 'g', 'h', 'c', 'n', 'e', 'a', '\\[', '\\{', 'w', 'x', 'i', 'o', '\\\'', '\\"', '\\.', '\\>', 'z'];
    var rus = ['а', 'б', 'б', 'в', 'г', 'д', 'е', 'ж', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'х', 'ц', 'ч', 'ш', 'щ', 'э', 'э', 'ю', 'ю', 'я'];
   
    for(var i=0; i<eng.length; i++) {
        var RE = new RegExp (eng[i], 'gi');
        word = word.replace(RE, rus[i]);
    }

    return word;
}
 
Последнее редактирование:
Назад
Сверху