Показать сообщение отдельно
  #42 (permalink)  
Старый 23.01.2012, 13:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

да, что-то более лучшего ничего не выходит, только так:

var text = 'test [b]blah [i]tata[/i] blah[/b] param [quote="test"]lal[alala[/quote] qweqweqwe [u]ter[u]tet[/u]er[/u] hjf [u]sdhg[/u] end';

var re = /(\[\s*([a-z]+)\s*(?:=?\s*([^\]]+))?\])([^\[]+)(\[\/\2\])/i,
    next = true, step = 1;

while( next ) {
    next = false;
    text = text.replace( re, function( all, tagattr, tag, attr, content, close ) {
        next = true;

        alert( [tagattr, tag, attr, content, close] );

        return '<' + tag + '>' + content + '</' + tag + '>';
    });
    if ( !next && step++ == 1 ) {
        next = true;
        re = /(\[\s*([a-z]+)\s*(?:=?\s*([^\]]+))?\])(.*?)(\[\/\2\])/i;
    }
}

alert( text );
Ответить с цитированием