Per quanto riguarda la validazione sintattica:
/(\d{2}[\/\.]){2}\d{4}/
Oppure, piu` selettiva:
/([0-2]\d)|(3[01])[\/\.](0[1-9])|(1[0-2])[\/\.](19)|(20)\d{2}/
Invece per una validazione semantica, puoi trasformare la stringa in oggetto Date() e quindi controllare se i singoli pezzi coincidono:
codice:
function checkdate(origstr) {
if(!origstr.match(/(\d{2}[\/\.]){2}\d{4}/) {
alert("formato non corretto");
return false;
}
var pezzi = origstr.split([\.\/]);
var ogg = new Date(pezzi[2], parseInt(pezzi[1])-1, pezzi[0]);
if(parseInt(pezzi[2]) != ogg.getFullYear()) {
alert("anno sbagliato");
return false;
}
if(parseInt(pezzi[1]) != ogg.getMonth()+1) {
alert("mese sbagliato");
return false;
}
if(parseInt(pezzi[0]) != ogg.getDate()) {
alert("giorno sbagliato");
return false;
}
return true;
}
Nota: nessuno di questi metodi ti puo` controlalre di non aver confuso il 3 febbraio con il 2 marzo e sim.