RegExp и search. Проблема с переменной в выражении
Здравствуйте.
Столкнулся с не совсем понятной мне вещью. Имеется регулярное выражение вида: /1 + id_user + [0-9]/. Отвечает это регулярное выражение за тривиальную задачу - в зависимости от пришедшего числа пользователь наблюдает в чат-приложении сообщение "Входящее приватное сообщение". Выкладываю часть кода, относящегося именно к проблеме. Значения channel и id_user приходят из XML. JS парсит ответ сервера и выводит пользователю на экран. /*...*/ var channel = channelArray.item(i).firstChild.data.toString(); var id_user = nameArray.item(i).getAttribute("id_user"); var UserToArrow = new RegExp('1' + id_user + '[0-9]'); if(channel.search(UserToArrow) > -1 ){ htmlMessage += "[входящий приват] "; displayMessage (htmlMessage); } /*...*/ Если поставить var id_user = '1', к примеру, то шаблон работает замечательно. Если же значение переменной приходит через nameArray.item(i).getAttribute("id_user"); то не работает. Ставил alert и на id_user и на UserToArrow. Шаблон формируется правильно, id_user - это номер текущего клиента. Firebug не ругается. Никак не могу понять в чем проблема и решил спросить у знающих людей. |
потому что это string а вам надо, как я понял число.
используйте parseInt() |
Цитата:
К тому же у меня и channel и id_user это string. То есть мне надо сформировать строку, которая будет регулярным выражением и по нему проверить channel. Числа мне по сути вообще не нужны, так как в будущем будут для идентификатора пользователя использоваться по особому сгенерированная строка. UPD: сейчас проверил форматы: var id_user = nameArray.item(i).getAttribute("id_user"); var t = '1'; var UserToArrow = new RegExp('1' + t + '2'); alert(typeof(id_user)); alert(typeof(t)); id_user is string. t is string. Но если поставить вместо t id_user, то шаблон не работает, хотя формат одинаковый. Я ничего уже не понимаю. |
Часовой пояс GMT +3, время: 15:17. |