Посмотрите, я правильно сформировал выражение?
(с точки зрения безопастности)
PHP код:
$bbcode = preg_replace('/\[color=([#]?[A-z]*)\](.*)\[\/color\]/', "<font color='\\1'>".htmlspecialchars("\\2",ENT_QUOTES)."</font>", $bbcode);
_
Может, что-нибудь стоит подкорректировать?