Prova un po' questa:
codice:if( preg_match( '/^(0|(?(?=.*\.)[1,9]\d{0,2}(?:\.\d{3})*|[1,9]\d*))(?:,(\d{1,2}))?$/' ,$euro // valuta da controllare ,$mth // array: 0=>valuta, 1=>interi, 2=>decimali ) ) echo '<pre>'.print_r($mth,true).'</pre>'; else exit('Formattazione scorretta');