Ora ho capito, ma ti faccio notare che il tuo script accetta anche date del tipo:
g/m/aa
m/g/aa
gg:mm:aaaa
ggXmmXaa
ecc.
Inoltre i valori di DateFormat possono essere "it" e "en" non "IT" e "EN" come da te prospettato.
Ecco una prima bozza:Nota che ho cambiato la struttura dello script, ma ho tenuto il significato delle variabili e i parametri di ingresso e uscita.codice: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; 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; }
Ho messo un controllo anche sull'anno (che nella tua funzine non c'era), mentre ho eliminato il controllo su "e" che credo sia sintassi proprietaria.

Rispondi quotando