Транслит в латиницу, проблемы с функцией яваскрипт

D
На сайте с 20.09.2010
Offline
175
448

Есть такая функция:

function ru_cyrill_to_latin(text)

{

text=text.toLowerCase();

var arrru = new Array ('Я','я','Ю','ю','Ч','ч','Ш','ш','Щ','щ','Ж','ж','А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н', 'О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ы','ы','Ь','ь','Ъ','ъ','Э','э',' ', '%', '$', '!', '?', ',');

var arren = new Array ('Ya','ya','Yu','yu','Ch','ch','Sh','sh','Sh','sh','Zh','zh','A','a','B','b','V','v','G','g','D','d','E','e','E','e','Z','z','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','R','r','S','s','T','t','U','u','F','f','H','h','C','c','Y','y','','','','','E', 'e', '-', '', '', '', '', '');

for(var i=0; i<arrru.length; i++){

var reg = new RegExp(arrru, "g");
text = text.replace(reg, arren);
}
return text;
}
Данная функция сейчас не работает, не работает после того как я добавил в массив русских слов новый элемент - запятую - ',' и соответственно в массив англ. символов пустой элемент - ''

Подскажите почему выдает ошибку?

SyntaxError: nothing to repeat var reg = new RegExp(arrru, "g");

dma84
На сайте с 21.04.2009
Offline
168
#1

Странно, что до этого работало

var expr = new RegExp('\\w', 'ig');

Вы не экранируете спецсимволы, попробуйте так:

var arrru = new Array ('Я','я','Ю','ю','Ч','ч','Ш','ш','Щ','щ','Ж','ж','А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н', 'О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ы','ы','Ь','ь','Ъ','ъ','Э','э','\\s', '%', '\\$', '\\!', '\\?', ',');

S
На сайте с 30.09.2016
Offline
469
#2

Попутно:

datum:
text=text.toLowerCase();
Половину символов из массивов можно смело выбросить.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий