Validation de la date regex pour aaaa-mm-jj

Quelle est la regex pour le format de date aaaa-mm-jj?

Je veux valider le courrier électronique d’edittext et vérifier s’il correspond à l’expression régulière.

Cela correspond à yyyy-mm-dd et aussi yyyy-md :

 ^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$ 

Visualisation d'expression régulière

Si vous cherchez une correspondance exacte pour yyyy-mm-dd essayez ceci

 ^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$ 

ou utilisez celui-ci si vous avez besoin de trouver une date dans une chaîne comme The date is 2017-11-30

 \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])* 

https://regex101.com/r/acvpss/1

Un simple serait

 \d{4}-\d{2}-\d{2} 

Visualisation d'expression régulière

Démo Debuggex

mais cela ne limite pas les mois à 1-12 et les jours de 1 à 31.

Il existe des vérifications plus complexes, comme dans les autres réponses, d’ailleurs très intelligentes. Cependant, vous devez vérifier une date valide, car il n’y a pas de vérification si un mois a 28, 30 ou 31 jours.

vous pouvez tester cette expression:

 ^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$ 

La description:
valide une date aaaa-mm-jj, aaaa mm jj ou aaaa / mm / jj

s’assure que le jour est dans la plage valide pour le mois – ne valide PAS le 29 février pour une année bissextile, mais seulement pour le mois de février

Correspondances (testé): 0001-12-31 | 9999 09 30 | 2002/03/03

Vous pouvez utiliser cette regex pour obtenir le format aaaa-MM-jj: ((?: 19 | 20) \ d \ d) – (0? [1-9] | 1 [012]) – ([12] [0 -9] | 3 [01] | 0? [1-9])

Vous pouvez trouver un exemple de validation de date: Comment valider une date avec une expression régulière.