 
			
				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 | 
 
 
 
 
	 | 
 
 
 |  
  |