Grazie, sinceramente non sapevo che mettendo e, si potessero lanciare delle funzioni. Non conosco un elenco completo delle opzioni. i è per case-insensitive.

Ad ogni modo ho scritto
codice:
$txt = preg_replace("'(color *(:|=) *#)(\w+)( *[;}])'ei","'$1'.strtoupper('$3').'$4'",$txt);
ed è andata bene.