VBA Regex sur date et heure pour contrôler le format
Bonjour,
Je dois récupérer depuis un fichier rempli manuellement des infos de date et heure.
Afin de contrôler la validité ainsi que le format, j'ai construit ces 2 expressions :
Code:
(\b[1-9]|0[1-9]|[12]\d|3[01]\b)([\/|\.|-])(\b0[1-9]|1[012]\b|\b[1-9]\b)([\/|\.|-])(\b([0-9]{2}(([0-9]{2}))?)\b)
Code:
(\b[1-9]\b|\b0[1-9]\b|\b1[0-9]\b|\b2[0-3]\b)(\b[:|.|-||H]\b)(\b[0-5]\d\b)
La première contrôle le format et la validité d'un date et la seconde d'une heure en acceptant les chiffrent unique où c'est intelligible (cad 1/1/17 ou 1:17 mais pas 1/1/1
un simple ((\d{2})([\/|\.|-])){2}(\d{4}) pour la date et (\d{2})([:|.|-||H]\b)(\d{2}) n'étant pas suffisamment restrictif.
Ces expressions valident :
Code:
1 2 3 4 5 6 7 8 9
| date heure
11.10-2016 10:00
1/10/2016 1:00
1/1/2016 20:57
11/1/2016
11/10/16
1/10/16
1/1/16
11/1/16 |
Mais pas :
Code:
1 2 3 4 5
| date heure
32/10/2016 25:30
11/13/2016 20:60
11/10/201 1:1
11/10/20165 |
Je voulais savoir s'il n'y aurait pas plus simple comme expression ou même comme méthode.
J'ai également un soucis avec l'année :
Code:
(\b([0-9]{2}(([0-9]{2}))?)\b)
Si l'on considère que l'année sur 4 chiffres s'écrit ssaa et sur 2 chiffres aa mon expression récupère bien ssaa ou aa mais également ss
Comment faire pour ne récupérer que de 17 à 99 ou de 2017 à 9999 mais pas 20 si c'est à droite des [\/|\.|-] par exemple ?
Merci.