11.06.2009, 17:01
|
|
Новичок на форуме
|
|
Регистрация: 11.06.2009
Сообщений: 5
|
|
Регулярка: выдает true, но не хочет давать false
Всем салют! Возникла трабла следующего характера: при поиске вхождения подстроки в строку в переменную закидывается true, а false ни в какую, при отрицательном результате. Например '745' входит в подстроку '745-84' , в результате true. А если '756', то по идее false. Может кто сталкивался с подобными чудесами. :wacko: Вот сама функция: var docTEXT = requestObj.responseText; // это ответ от сервера
var reg = new RegExp('[^_]+','g');
var reg_art = new RegExp('^'+document.ACT.article.value); // например: ^765
var result;
var res_art;
if (docTEXT != '')
{res_art = reg.exec(docTEXT); //напр. 765-489
result = reg_art.test(res_art); // 765 ищем в 765-489
alert(result); // вот тут выводит true или false
if (result==true) {
document.getElementById("art").innerHTML='Арти кул: '+res_art;
document.ACT.art_name.value = reg.exec(docTEXT);
document.ACT.kol_b.value = reg.exec(docTEXT);
document.ACT.coast.value = reg.exec(docTEXT);
return 0; }
//вот этот код вообще не выполняется, т.к. значение false alert'ом не выводится
document.getElementById("art").style.display = 'none';
document.ACT.art_name.value = '';
document.ACT.kol_b.value = '';
document.ACT.coast.value = '';
Последний раз редактировалось Trojan, 11.06.2009 в 20:09.
|
|
11.06.2009, 17:43
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
А теперь без лишнего мусора, просто регулярка и текст, на котором она якобы не правильно работает.
|
|
11.06.2009, 19:23
|
|
Новичок на форуме
|
|
Регистрация: 11.06.2009
Сообщений: 5
|
|
reg = new RegExp('^'+document.ACT.article.value); //допустим тут '765'
result = reg.test('766-489');
alert(result); - вот тут не выводит значение false, только true
Так понятнее?
|
|
11.06.2009, 19:59
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
У меня сразу false .
|
|
11.06.2009, 20:06
|
|
Новичок на форуме
|
|
Регистрация: 11.06.2009
Сообщений: 5
|
|
если подставляешь вместо document.ACT.article.value готовое значение, допустим '735' то false, а если выдергиваешь value из поля ввода article формы ACT, то кусок кода ниже:
document.getElementById("art").style.display = 'none';
document.ACT.art_name.value = '';
document.ACT.kol_b.value = '';
document.ACT.coast.value = '';
при значении false не выполняет(((
|
|
11.06.2009, 20:12
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Так там же к value пустая строка присваивается. Регулярка, получается, будет проверять, есть ли у строки начало. У любой строки есть начало.
|
|
11.06.2009, 20:22
|
|
Новичок на форуме
|
|
Регистрация: 11.06.2009
Сообщений: 5
|
|
Ну смотри, если в поле ввода article будет value 7, значит регулярка reg = ^7. Я начинаю тестить строку допустим '54': reg.test('54'); В итоге-то должно быть false, а у меня при false вообще alert не выводит! Только когда true... Мне нужно проверить, есть ли вхождение вводимого значения в поле ввода в тестируемой строке только с начала строки, т.е. 765 в 765-456 даст true, а 765 в 465-765 даст уже false.
|
|
11.06.2009, 20:44
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Попробуй экранировать символы в value:
RegExp.escape = function(str) {
return (str + '').replace(/([?!^$.(){}:|=[\]+\-\/\\*])/g, '\\$1');
};
|
|
15.06.2009, 16:07
|
Флудер
|
|
Регистрация: 25.07.2008
Сообщений: 1,271
|
|
попробуй проверить, а приходит ли в document.ACT.article.value какое-нибудь значение....
|
|
16.06.2009, 12:23
|
|
Новичок на форуме
|
|
Регистрация: 11.06.2009
Сообщений: 5
|
|
Тема закрыта, во всем "виноват" был docTEXT на который приходило "", из-за этого блок просто пропускался) Спасибо всем за помощь, особенно мне)))
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Проблема с оперой |
Ден |
Opera, Safari и др. |
1 |
22.03.2009 15:49 |
|
|
|