Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Немогу разобратся с REGEXP


Автор: Хрипа 30.1.2008, 17:14
Добрый день, не могу понять как записать все совпадения в переменную допустим как это делает
preg_match в PHP как выдернуть всё что находится между  <table>ПРИВЕТ</table> и поместить переменную,  smile  или хотя бы название функции и описания! Спасибо!

Автор: under_sun 30.1.2008, 19:33
Можно через метод exec() объекта RegExp:
Код

var str = "<table>ПРИВЕТ</table>";
var reg = /<table>(.*?)<\/table>/i; // или reg = new RegExp("<table>(.*?)</table>", "i");
r.exec(str);
alert(RegExp.$1);

Можно через match() :
Код

var str = "<table>ПРИВЕТ</table>";
var s = str.match(/<table>(.*?)<\/table>/i);
alert(RegExp.$1);

//Так тоже работает...
alert(str.match(/<table>(.*?)<\/table>/i)[1]);

Автор: ksnk 30.1.2008, 19:52
under_sun, 
Цитата(Хрипа @  30.1.2008,  17:14 Найти цитируемый пост)
 как записать ВСЕ совпадения

var str = "<table>ПРИВЕТ</table><table>МЕДВЕД</table>"; ?

Лучше сходить на http://wdh.suncloud.ru/js12.htm#ref3123 и прочитать про RegExp. В дополнении к , в общих чертах правильному методу under_sun, стоит почитать про модификатор g и способы его применения.

Автор: Хрипа 30.1.2008, 20:31
Мужики спасибо большое!! я многое понел как работает однако так и не смог извлеч данные таблици(( помогите пожалуйста
Код

<table border=0 cellpadding=1 cellspacing=3 width="100%">
     <tr>
      <td width=7% bgcolor=F0F0F0>&nbsp;<b>Донецк</b></td>
      <td nowrap align=center bgcolor=F0FFF0>Вечер<br>30 янв<br>Ср</td>
      <td nowrap align=center bgcolor=F0F0FF>Ночь<br>31 янв<br>Чт</td>
      <td nowrap align=center bgcolor=FFF0F0>Утро<br>31 янв<br>Чт</td>
      <td nowrap align=center bgcolor=FFFFF0>День<br>31 янв<br>Чт</td>
      <td nowrap align=center bgcolor=F0FFF0>Вечер<br>31 янв<br>Чт</td>
      <td nowrap align=center bgcolor=F0F0FF>Ночь<br>1 фев<br>Пт</td>
      <td nowrap align=center bgcolor=FFF0F0>Утро<br>1 фев<br>Пт</td>
      <td nowrap align=center bgcolor=FFFFF0>День<br>1 фев<br>Пт</td>
    </tr>
</table>


Код:
Код

     var r  = '<table border=0 cellpadding=1 cellspacing=3 width="100%">(.*?)';
     var reg = new RegExp(r,"igm");
        var arr = reg.exec(this.string);

но arr почемуто равен null

Автор: ksnk 30.1.2008, 20:57
Код

     var r  = '<table border=0 cellpadding=1 cellspacing=3 width="100%">((?:\r|\n|.)*)';
     var reg = new RegExp(r,"igm");reg.multiline = true; // << не работает этот <m> :-(
        var arr = reg.exec(this.string);

а так? В RegExp, imho, как-то странно работает модификатор m. Приходится "извращаться"...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)