Non e` che hai dimenticato una negazione, da qualche parte?

Io la metterei davanti al test:
if(!re.test(f.prp.value)){

Per la RegExp, hai ragione, la avevo proposta io; nel frattempo ne ho usate un po' (soprattutto in Perl, dove sono molto simili, ma qualche sintassi non e` identica).