Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   вывести подряд ответы match (regexp) (https://javascript.ru/forum/events/28358-vyvesti-podryad-otvety-match-regexp.html)

Brook 16.05.2012 19:06

вывести подряд ответы match (regexp)
 
Доброго времени суток, уважаемые форумчане.

У меня возникла проблема:
- есть textarea в котором много html кода, допустим в нем есть список со схожими id (вот мои: kn1ser, kn2ser, kn3ser .... и т.д.) поиск по textarea сделал так:

function getserText(){
    for (p=1;p<=1000;p++) {
  var reg = new RegExp('<a class="kn'+p+'ser" onclick=".*?" value="(.*?)">Stroka '+p+'</a>', 'mi');
 var textarea = document.getElementById('message');
 return textarea.value.match(reg)[1];
    }}


он выдает мне значение первой ссылки(как вы уже поняли я ищу ссылки), однако вторую, третью и т.д. он мне не выдает, то есть я для проверки работоспособности скрипта вывожу полученные значения через alert() ....

Подскажите, пожалуйста, что я делаю не так, и как сделать чтобы поиск выдавал все найденные результаты?!

Заранее, Спасибо за помощь.:thanks:

Brook 18.05.2012 00:58

ни одного ответа за 2 дня... :-?

melky 18.05.2012 01:35

Цитата:

Сообщение от Brook (Сообщение 174803)
Доброго времени суток, уважаемые форумчане.

У меня возникла проблема:
- есть textarea в котором много html кода, допустим в нем есть список со схожими id (вот мои: kn1ser, kn2ser, kn3ser .... и т.д.) поиск по textarea сделал так:

function getserText(){
    for (p=1;p<=1000;p++) {
  var reg = new RegExp('<a class="kn'+p+'ser" onclick=".*?" value="(.*?)">Stroka '+p+'</a>', 'mi');
 var textarea = document.getElementById('message');
 return textarea.value.match(reg)[1];
    }}


он выдает мне значение первой ссылки(как вы уже поняли я ищу ссылки), однако вторую, третью и т.д. он мне не выдает, то есть я для проверки работоспособности скрипта вывожу полученные значения через alert() ....

Подскажите, пожалуйста, что я делаю не так, и как сделать чтобы поиск выдавал все найденные результаты?!

Заранее, Спасибо за помощь.:thanks:

для поиска всех совпадений используется RegExp.exec, причем регвыр должно иметь флаг "global"

пример:
var text = '  12235b f<a class="kn55ser">Stroka55</a>hdf  <a class="kn45ser" onclick="alert(123)">Stroka45</a>\n\
               kaldkscm  <a class="kn9ser" onclick="fooo">Stroka9</a> km en\n\
                этого там не будет - <a class="kn333ser">Stroka332</a>\n\
                <a class="kn8ser" mysata="ok">Stroka8</a> kj';

var reg = /<a class="kn(\d+)ser"[^>]*?>Stroka\1<\/a>/gm;

do {
  matched = reg.exec(text);
  if(matched){
    alert(matched[0]);
  }
} while(matched);


Подробнее, Cтатья на сайте

Brook 18.05.2012 18:01

melky,
большое спасибо буду разбираться)))


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