А что мешает отбить bb-коды пробелами от слов? А потом убрать лишние пробелы. Как-то так:
str= "bla-bla, [B]bla-bla-bla[/B], mr. Freeman";
str= str.replace(/\[[\S\s]*?\]/g, " $& ");
alert(str);
// здесь вы делаем со строкой всё, что нужно, а потом убираем лишние пробелы.
str= str.replace(/\s(\[[\S\s]*?\])\s/g, "$1");
alert(str);