ureech,
Ну просто входную строку перед парсером
var str ="asdasdasdasd\nasdasdasd";
str = str.replace(/\n/g,'<br>');
alert(str)
Блоки BB-код [code=...]что-то[/code] нун вытаскивать из строки до парсера
ну короче:
var str = "asdas&da<sda>sd\nas[code=XXX]dasdasd[/code]asdasdasdasd\nas[code=YYY]dasdasd[/code]вавапвапвапва";
//Тут парсим & и угловые скобки
str = str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
alert(str);
//Вынимаем теги [code] из строки
var stack = [], j=-1, bound = '==bound==';
str = str.replace(/(\[code(:?=[^\]]+)?\])(.*?)(\[\/code\])/gi, function (s,p1,p2,p3){
stack[++j]=[p1,p2,p3]; return bound+j+bound;
});
//Заменяем \n на <br>
str = str.replace(/\n/g,'<br>');
alert(str); /*Эту строку можно запихивать в парсер*/
Теги [code] парсим в стеке, вставляем их обратно в стек же, вместо [p1,p2,p3] и значение стека(распарсенный тег [code]) вставляем после распарса всей строки в парсере, заменяя ==bound==NUMstack==bound== на значение стека.
Типично boundary(разделитель или селектор) более длинный, типо bound = '====12358====';