Как получать вхождения при поиске по регулярному выражению
Есть к примеру регулярное выражение
/\[name1=([^\]]*)\](([\S\s])*?)\[\/name1\]/g и есть строка [name1=name3]text[/name1] что мне нужно с этим всем сделать, чтобы вытащить из строки name3 и text? |
Выделить каждый ткой фрагмент и применить ту же регулярку, но без флага 'g'.
|
var s = "[name1=xxxx]yyyy[/name1]"; var re = /\[([^=]+)=([^\]]+)\]([^[]*)\[\/\1\]/; var res = s.match(re); alert( res[2] ); alert( res[3] ); |
Цитата:
|
var s = "[name1=xxxx]yyyy[/name1]"; var re = /\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/; var res = s.match(re); alert( res[1] ); alert( res[2] ); |
var s = "[name1=xxxx0]yyyy0[/name1]zzzz[name1=xxxx1]yyyy2[/name1]zzzz[name1=xxxx3]yyyy3[/name1]";
alert(JSON.stringify(s.match(/\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/g).map(function(a){
var x = /\[name1=([^\]]+)\]([^\[]*)\[\/name1\]/.exec(a);
x.shift();
return x;
})));
|
Цитата:
Код практически из примера по моей ссылке:
var myRe = /\[name1=([^\]]*)\]([\S\s]*?)\[\/name1\]/g;
var str = "[name1=xxxx0]yyyy0[/name1]zzzz[name1=xxxx1]yyyy2[/name1]zzzz[name1=xxxx]yyyy[/name1]";
var myArray, result = [];
while ((myArray = myRe.exec(str)) != null)
{
result.push(myArray);
}
alert(result.join('\n'))
И никаких маразматических лишних телодвижений. А ответ один: |
Понял! При использовании exec флаг g не влияет на результат.
|
Спасибо всем, попробую разобраться, просто я только начал учить язык.
|
| Часовой пояс GMT +3, время: 20:56. |