Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.05.2012, 19:06
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

вывести подряд ответы 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() ....

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

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

Последний раз редактировалось Brook, 16.05.2012 в 23:05.
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2012, 00:58
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

ни одного ответа за 2 дня...
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2012, 01:35
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

У меня возникла проблема:
- есть 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() ....

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

Заранее, Спасибо за помощь.
для поиска всех совпадений используется 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татья на сайте

Последний раз редактировалось melky, 18.05.2012 в 01:39.
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2012, 18:01
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

melky,
большое спасибо буду разбираться)))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск