можно сделать и так:
var text = 'test [b=color]bold[/b] blah [code run]function(){}[/code] tar [quote]blah blah [i]ta[i]r[/i]am[/i] param[/quote]';
function parseBBCode( text ) {
return text.replace( /\[(([a-z]+)(?:(?:\=|\s)([^\]]+))?)\](.*)\[\/\2\]/gi, function( all, tagAttr, tag, attr, content ) {
// tag - содержит имя тега BBCode
// tagAttr - содержит и тег и его атрибут(ы)
// attr - трибут(ы) текущего тега
// content - собственно содержимое этого тега
return '<' + tagAttr + '>' + parseBBCode( content ) + '</' + tag + '>';
});
}
alert( parseBBCode( text ) );
BBCode теги он ищет такого вида:
[code]
[code=color]
[code run]
[code run hide]
Ну а дальше дело техники и воображения.