Как получать вхождения при поиске по регулярному выражению
Есть к примеру регулярное выражение
/\[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, время: 10:32. |