web-dev-qa-db-fra.com

expression régulière pour valider le format date/heure (MM/JJ/AAAA)

J'essaie de valider le format de date/heure MM/JJ/AAAA. Voici le code que j'essaye s'il vous plaît aider.

 function ValidateDate(testdate) {
        var Status
        var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
        if (!reg.test(testdate)) {
            Status = false;
        }
        return Status;
    }
22
Supreet

Essayez votre expression rationnelle avec un outil tel que http://jsregex.com/ (il y en a beaucoup) ou mieux, un test unitaire.

Pour une validation naïve:

function validateDate(testdate) {
    var date_regex = /^\d{2}\/\d{2}\/\d{4}$/ ;
    return date_regex.test(testdate);
}

Dans votre cas, pour valider (MM/JJ/AAAA), avec une année comprise entre 1900 et 2099, je l’écrirai ainsi:

function validateDate(testdate) {
    var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ;
    return date_regex.test(testdate);
}
49
noirbizarre

La réponse indiquée est parfaite, mais pour un scénario où dd et mm sont en réalité des chiffres uniques. la regex suivante est parfaite dans ce cas:

    function validateDate(testdate) {
        var date_regex = /^(0?[1-9]|1[0-2])\/(0?[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ;
        return date_regex.test(testdate);
    }

8
Sujeet Sinha

basé sur ceci

jj-mm-aa

J'ai modifié l'original en ceci:

^(?:(?:(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec))(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:(?:0?2|(?:Feb))(\/|-|\.)(?:29)\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

teste la regex ici

2
luisnicg

Dans ce cas, pour valider Date (JJ-MM-AAAA) ou (JJ/MM/AAAA), avec une année comprise entre 1900 et 2099, comme cela avec validation mois et jours 

if (!Regex.Match(txtDob.Text, @"^(0[1-9]|1[0-9]|2[0-9]|3[0,1])([/+-])(0[1-9]|1[0-2])([/+-])(19|20)[0-9]{2}$").Success)                  
{
   MessageBox.Show("InValid Date of Birth");
   txtDob.Focus();
}
0
Nouman Ali
var pattern = new RegExp((0|1)[0-9]\/[0-3][0-9]\/(19|20)[0-9]{2});
if(!testdate.match(pattern))
   return false;
else return true;
0
MIIB