sicuro che la condizione sia
!empty($fields[$field_name]) && !preg_match($reg_exp, $fields[$field_name])
?
in questo caso la condizione viene eseguita solo se il campo non è vuoto e se non contiene i caratteri cercati.
in ogni caso per la regexp prova con
codice:$reg_exp = "#^[a-zA-Z\s0-9_-]+$#";