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, время: 13:46. |