Una cosa alla volta ...
Per il grassetto:
var messaggio="[b]ciao[/b] a te [b]Apocalypse[/b]";
messaggio = messaggio.replace(/\[b\]/g,"").replace(/\[\/b\]/g,"");
alert(messaggio);
occorre fare l'escape delle parentesi quadre nei pattern di ricerca, perchè altrimenti sono interpretate come 'sets'.
Adesso però spieghi cosa vuoi ottenere con:
messaggio = messaggio.replace(/?/g,"");
Se vuoi che qualsiasi punto interrogativo eventualmente presente nel messaggio sia cancellato, allora basta fare l'escape del punto interrogativo, così:
messaggio = messaggio.replace(/\?/g,"");
altrimenti spiegati meglio.
P.S: ci ho messo una vita a scrivere, perchè ho dovuto usare un 'escamotage' per far apparire i tags tipo [b]
Come ho fatto?
Lo so, non è intuitivo, ma ... basta usare le entities, così:
[b]
.. e non si possono usare tra [code] e [/code]
o tra [php] e [/php] .. non vengono interpretate!
ma ciò esula dal tuo problema...
HTH
Zappa