de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Sajee
Sajee
Question

Javascript: bagaimana cara memvalidasi tanggal dalam format MM-DD-YYYY?

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.

34 2008-11-09T21:10:32+00:00 3
 706Astor
706Astor
Pertanyaan edit 24 Juni 2016 в 9:07
Pemrograman
javascript
validation
date
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 CMS
CMS
9 November 2008 в 9:40
2008-11-09T21:40:22+00:00
Lebih
Sumber
Sunting
#8622539

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.

3
0
 Owen
Owen
9 November 2008 в 9:27
2008-11-09T21:27:43+00:00
Lebih
Sumber
Sunting
#8622537

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
2
0
Kevin Gorski
Kevin Gorski
9 November 2008 в 9:18
2008-11-09T21:18:57+00:00
Lebih
Sumber
Sunting
#8622536

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})$
1
0
Related communities 1
JavaScript Indonesia
JavaScript Indonesia
14 533 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 1 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi