Per l'ultima domanda credo proprio che tu non possa specificare 2 numeri secchi diciamo, ma devi ripetere il pattern. E se non erro dvi mettere il numero pių grande per primo. Mentre per la regex precedente credo tu possa sintetizzarla cosė:
nottecodice:echo preg_match("#^([a-f0-9]{3}){1,2}$#i",$colore) ? 'valida' : 'non valida';![]()