Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регэкспы глючат (https://javascript.ru/forum/misc/14058-regehkspy-glyuchat.html)

KOLANICH 27.12.2010 00:05

регэкспы глючат
 
var rx=/([0-9]+)\s+PTZ/igm;
			console.log("processing element with id",this.id);
			
			console.log(this.html);
			console.log(rx.exec(this.html)[1]);
			console.log(rx.exec(this.html)[1]);
			console.log(rx.exec(this.html)[1]);
			
			rx.lastIndex=0;

//ну и  дальше там присваивание найденного свойствам


это - часть содержимого метода
мы им проходим по массиву экземпляров класса
2 элемента обрабатывает и падает с ошибкой

в regexcoach всё норм (если подсунуть исходник, выведенной функцией,если взять самому через иннерхтмл - то тоже в регекскоаче всё норм), если вручную вызвать код - тоже всё норм,
а в цикле падает с ошибкой
типа ничего не нашло
что за ппц и как исправить

SV0L0CH 27.12.2010 00:42

Похоже, дело в самом цикле

B@rmaley.e><e 27.12.2010 00:52

Цитата:

Сообщение от KOLANICH
2 элемента обрабатывает и падает с ошибкой

Очень информативно.

<телепат>
Сдается мне, что падает только в Лисе. В последних версиях хрома и оперы ошибок быть не должно (Остальные браузеры тоже могут падать).
А все из-за статических особенностей регэкспов в JS.
</телепат>

KOLANICH 27.12.2010 12:52

this.parseInfo=function(){
			var rx=new RegExp("([0-9]+)\\s+PTZ","igm");
			console.log("processing element with id",this.id);
			
			this.startBid=Number(rx.exec(this.html)[1]);
			this.currentBid=Number(rx.exec(this.html)[1]);
			this.nextBid=Number(rx.exec(this.html)[1]);
			rx=new RegExp("([0-9]+):([0-9]+):([0-9]+)","ig");
			
			var time=rx.exec(this.html);

			this.remaining=Number(time[1]*3600)+Number(time[2]*60)+Number(time[3]);
			this.remainingStr=time[0];
		}



поправил создание регекспа, а всё равно падает, только теперь - на первом элементе

<h4></h4> <h3>PS3 Madden NFL 2010</h3> <div class="item-holder"> <div class="img-holder"><img src="http://static.lockerz.com/auction/med/E01-01-P000-00088-00000_01.jpg" alt="PS3 Madden NFL 2010"></div> <div class="expanded-details"> <ul class="auction-image-list"> <li>http://static.lockerz.com/auction/med/E01-01-P000-00088-00000_01.jpg</li> <li>http://static.lockerz.com/auction/med/E01-01-P000-00088-00000_02.jpg</li> <li>http://static.lockerz.com/auction/med/E01-01-P000-00088-00000_03.jpg</li> </ul> <div class="details"> <ul> <li>Supports up to 32 teams</li> <li>Allows owners to manage organization away from console via Internet or iPhone</li> <li>Cartoon series regulars perform voice acting</li> <li>US/Canada-compatible only</li> <li>Rated T</li> </ul> <!-- <p>Product sku: E01-01-P000-00088-00000-0NA</p> --> <input name="sku" value="E01-01-P000-00088-00000-0NA" type="hidden"> </div> </div> <p style="display: block;" class="time hidden">Time remaining:<br>5:48:15</p> <p class="openingBid">Opening Bid: 5 PTZ</p> <p class="currentBid">Current Bid: 1475 PTZ</p> <p class="yourBid">Your Bid: 1480 PTZ</p> <input class="ptz-needed" name="ptzReq" id="ptzReq2222" value="1475" type="hidden"> <input class="auction-id" value="2222" type="hidden"> <input class="opening-bid" name="opening-bid" value="5" type="hidden"> <a href="#" class="bid-btn">Bid</a> </div>

B@rmaley.e><e 27.12.2010 12:59

А у Вас точно есть 6 подходящих под паттерн строк в this.html? this.html, на котором падает, в студию!

KOLANICH 27.12.2010 13:10

добавил


Часовой пояс GMT +3, время: 03:40.