Dates…
May 8th, 2009
Histoire de m’amuser un peu, j’ai fait une jolie expression régulière qui détecte les dates au format YYYY-MM-DD en vérifiant que le mois existe et que le nombre de jours dans le mois est correct (par contre le 29 février n’est pas géré, il est toujours accepté quelle que soit l’année)
(\d{4})-((10|12|0?1|0?3|0?5|0?7|0?8)-(10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|0?1|0?2|0?3|0?4|0?5|0?6|0?7|0?8|0?9)|(11|0?2|0?4|0?6|0?9)-(10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|0?1|0?2|0?3|0?4|0?5|0?6|0?7|0?8|0?9)|(0?2)-(10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|0?1|0?2|0?3|0?4|0?5|0?6|0?7|0?8|0?9))(\s|$)
Et tant qu’on y est, la même pour gérer toutes les dates, à année positives ou négatives
(-?\d+)-((10|12|0?1|0?3|0?5|0?7|0?8)-(10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|0?1|0?2|0?3|0?4|0?5|0?6|0?7|0?8|0?9)|(11|0?2|0?4|0?6|0?9)-(10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|0?1|0?2|0?3|0?4|0?5|0?6|0?7|0?8|0?9)|(0?2)-(10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|0?1|0?2|0?3|0?4|0?5|0?6|0?7|0?8|0?9))(\s|$)
Et puis on va finir avec quelques liens : une pages qui liste des expressions régulières de détection de date et une autre page qui liste toutes les dates remarquables pour les systèmes informatiques jusqu’à ce que le nombre de particules dans l’univers soit trop faible pour qu’on puisse écrire la date…
Entry Filed under: Programmation

2 Comments Add your own
1. Aurélien Derouineau | May 10th, 2009 at 11:43 pm
Je me demande si ça ne poserait pas un problème au niveau performances, si on a besoin de matcher pleins de dates rapidement…
En même temps une telle tâche doit être assez rare =)
2. Rémy Sanchez | May 11th, 2009 at 12:26 pm
Ben y’aurai peut être un problème de performances si il fallait matcher PLEIN de dates oui, mais en l’occurence c’était pour valider un formulaire sur un site web…
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Subscribe to the comments via RSS Feed