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:
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;
}
Nota che ho cambiato la struttura dello script, ma ho tenuto il significato delle variabili e i parametri di ingresso e uscita.
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.