Saya melihat jawaban potensial di sini, tetapi itu untuk YYYYY-MM-DD: Validasi tanggal JavaScript
Saya memodifikasi kode kode di atas untuk MM-DD-DYYYY seperti itu tetapi saya masih tidak bisa'tidak bisa membuatnya bekerja:
String.prototype.isValidDate = function()
{
var IsoDateRe = new RegExp("^([0-9]{2})-([0-9]{2})-([0-9]{4})$");
var matches = IsoDateRe.exec(this);
if (!matches) return false;
var composedDate = new Date(matches[3], (matches[1] - 1), matches[2]);
return ((composedDate.getMonth() == (matches[1] - 1)) &&
(composedDate.getDate() == matches[2]) &&
(composedDate.getFullYear() == matches[3]));
}
Bagaimana saya bisa membuat kode di atas bekerja untuk MM-DD-DYYYY dan lebih baik lagi MM/DD/YYYYY?
Terima kasih.
Saya menggunakan regex ini untuk memvalidasi MM-DD-YYYY:
function isValidDate(subject){
if (subject.match(/^(?:(0[1-9]|1[012])[\- \/.](0[1-9]|[12][0-9]|3[01])[\- \/.](19|20)[0-9]{2})$/)){
return true;
}else{
return false;
}
}
Ini hanya akan cocok dengan bulan-bulan yang valid dan Anda dapat menggunakan / - atau . sebagai pemisah.
apa yang tidak berhasil? inilah versi yang telah diuji:
String.prototype.isValidDate = function() {
var match = this.match(/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/);
var test = new Date(match[3], match[1] - 1, match[2]);
return (
(test.getMonth() == match[1] - 1) &&
(test.getDate() == match[2]) &&
(test.getFullYear() == match[3])
);
}
var date = '12/08/1984'; // Date() is 'Sat Dec 08 1984 00:00:00 GMT-0800 (PST)'
alert(date.isValidDate() ); // true
Anda bisa menyederhanakannya dengan mengubah dua baris pertama fungsi menjadi seperti ini:
var matches = this.match(/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/);
Atau, ubah saja parameter ke konstruktor RegExp menjadi
^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$