Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   exec, как правильно? (https://javascript.ru/forum/misc/18842-exec-kak-pravilno.html)

igor04 18.07.2011 00:41

exec, как правильно?
 
var data = "<code>example1</code><code>example2</code>";
var reg = new RegExp("<code>([\\s\\S]*)<\/code>","g");
var res = reg.exec(data);

alert(res[1]);


Результатом данного кода является "example1 </ code> <code> example2" правда непонятно почему так? почему не "example1"?
Подскажите пожалуйста что тут не так!:help:

trikadin 18.07.2011 00:46

Это жадность)

trikadin 18.07.2011 00:47

var data = "<code>example1</code><code>example2</code>";
var reg = new RegExp("<code>([\\s\\S]*?)<\/code>","g");
var res = reg.exec(data);
 
alert(res[1]);

Будет работать)

ваый 18.07.2011 00:54

а я еще добавлю, что вместо [\s\S]* (все пробельные символы или все не пробельные) логично использовать просто .* (любые символы).

igor04 18.07.2011 00:54

Спасибо!:thanks:

kobezzza 18.07.2011 00:56

Цитата:

а я еще добавлю, что вместо [\s\S]* (все пробельные символы или все не пробельные) логично использовать просто .* (любые символы).
Точка не работает с multiline (да, с включённым модификатором m), так что лучше таки [\s\S]

trikadin 18.07.2011 01:25

Этот код, кстати, не выловит example2.

var data = "<code>example1</code><code>example2</code>";
var reg = new RegExp("<code>([\\s\\S]*?)<\/code>","g");
var res = reg.exec(data);
  
alert(res);


Вот так:

var reg= /<code>([\s\S]*?)<\/code>/g;
var data= "<code>example1</code><code>example2</code>";
var temp, res=[];
while ((temp=reg.exec(data))!==null)
 res.push(temp);

alert(res);


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