... aggiungendo delle parentesi non mi da più errore, e fa il controllo, ma mi restituisce sempre falese (anche se questa volta supera l'if).Ho inserito un alert per verificare fino a dove arriva lo scriptcodice:function verifyDateFormat(DateString, DateFormat) { var match; var tmpDate; var gg='',mm='',aa=''; var RE = new Array(); RE['it'] = /^([0-3]\d)[\/\.]([01]\d)[\/\.](\d{4})$/ RE['en'] = /^([01]\d)[\/\.]([0-3]\d)[\/\.](\d{4})$/ RE['gen'] = /^(\d{4})[\/\.]([01]\d)[\/\.]([0-3]\d)$/ if(!(match=DateString.match(RE[DateFormat]))) { return false; } alert("punto 1"); switch(DateFormat) { case "it": gg = match[0]; mm = parseInt(match[1])-1; aa = match[2]; break; case "en": mm = parseInt(match[0])-1; gg = match[1]; aa = match[2]; break; case "gen": aa = match[0]; mm = parseInt(match[1])-1; gg = match[2]; break; } tmpDate = new Date(aa, mm, gg); return (tmpDate.getMonth()+1==mm) && (tmpDate.getDate()==gg) && tmpDate.getFullYear()==aa; } var a="31/12/2004"; alert(verifyDateFormat(a, "it") );