var str = [];
'[a]urlAva[/a][n]FullName[/n][m]Message[/m]'.replace(/\[([^\]+])]([^\[\]]+)\[\/\1\]/g, function(a,b,c){
str.push(c);
});
alert(str.join('|'))
Но тут без вложенности. Если со вложенностью - придётся работать либо циклично либо рекурсивно и вручную.
Во втором случае .split('|'), какие проблемы?)