quelle est la regex pour le format de date aaaa-mm-jj?
Je veux valider l'email d'edittext et vérifier s'il correspond à la regex.
Cela correspondra à yyyy-mm-dd
et aussi yyyy-m-d
:
^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$
Si vous cherchez une correspondance exacte pour yyyy-mm-dd
alors 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])*
Un simple serait
\d{4}-\d{2}-\d{2}
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. Néanmoins, vous devez vérifier la validité de la date, car il n’ya pas de vérification pour savoir si un mois compte 28, 30 ou 31 jours.
Vous pouvez utiliser cette expression rationnelle pour obtenir le format aaaa-MM-jj: ((?: 19 | 20)\d\d) ? [1-9] | 1 [012]) - ([12] [0 -9] | 3 [01] | 0? [1-9])
Vous pouvez trouver des exemples de validation de date: --- (Comment valider une date avec une expression régulière
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 d'une année bissextile, seulement ce mois de février peut avoir 29 jours
Allumettes (testées): 0001-12-31 | 9999 09 30 | 2002/03/03