web-dev-qa-db-fra.com

Validation de la date regex pour aaaa-mm-jj

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.

32
Romaine Herrera

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])$

Regular expression visualization

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])*

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

80
Vinod

Un simple serait

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

Regular expression visualization

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. 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.

18
wumpz
4
Hamid Shatu

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

3
zainoz.zaini