Dd / mm / yyyy di controllo della data di Javascript?

Ho un campo di modulo html in cui le persone possono inserire date codificate come tali:

input type="text" name="dateofbirth" placeholder="dd/mm/yyyy" 

Sto cercando di trovare un JavaScript per verificare che la data sia inserita nel formato dd/mm/yyyy (quindi 10 caratteri, 2/2/4)

Qualsiasi commento sarebbe apprezzato. Solo la prima volta a fare javascript e hanno fatto bene fino a questo singhiozzo.

Modifica: codice (il nome del modulo è ‘iscrizione)

 // JavaScript Document function validateForm(signup) { { var x = document.forms["signup"]["dateofbirth"].value; var reg = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/; if (x.match(reg)) { return true; } else { alert("Please enter dd/mm/yyyy"); return false; } } } 

Hai guardato la libreria javascript di Moment.js?

http://momentjs.com/

Non l’ho usato, ma ho in programma di migrare il mio codice Javascript ad esso.

È ansible convalidare la data con il formato fornito tramite javascript utilizzando l’espressione regolare. codice di esempio mostrato di seguito.

 function(input){ var reg = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/; if (input.match(reg)) { alert("Input matched"); else { alert("Please enter dd/mm/yyyy"); } } 

La migliore libreria di date JavaScript che ho trovato è date.js su http://code.google.com/p/datejs/

È anche consapevole della cultura, quindi per convalidare le date di gg / mm / aaaa (presumo che non si trovi negli Stati Uniti), utilizzare Date.parse come segue

 var d1 = Date.parse("01/12/2004"); // returns a valid JavaScript date var d2 = Date.parse("30/02/2004"); // returns null 

Consulta la guida MDN per le espressioni regolari . Avrai bisogno di informazioni sulla class di caratteri che corrisponde alla cifra – cerca la frase “Abbina un carattere numerico”; e un modo per specificare la lunghezza esatta della corrispondenza – cercare la frase “Trova esattamente n occorrenze del carattere precedente” in questa guida.

Hai guardato nella console degli errori del tuo browser web per assicurarti che non vengano sintetizzati errori di runtime o syntax JS? Il codice JavaScript che hai aggiunto alla tua domanda non è una sorpresa sorprendente (hai un extra { e } racchiude il tuo corpo funzione).

Suggerimento: quando si utilizza if (regex.test(str)) per testare una stringa per la validità, è necessario utilizzare if (regex.test(str)) e non if (str.match(regex)) per semplicità, prestazioni e if (str.match(regex)) .

Date le vostre esigenze, lo farei:

 function isDDMMYYYY(str){ return /^\d{2}/\d{2}/\d{4}$/.test(str); } 

Tuttavia, cambierei personalmente i requisiti per consentire agli utenti di inserire giorni e mesi a una cifra:

 return /^\d{1,2}/\d{1,2}/\d{4}$/.test(str);