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 : Sélectionner tout - Visualiser dans une fenêtre à part (\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)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
Code : Sélectionner tout - Visualiser dans une fenêtre à part (\b[1-9]\b|\b0[1-9]\b|\b1[0-9]\b|\b2[0-3]\b)(\b[:|.|-||H]\b)(\b[0-5]\d\b)
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 :
Mais pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je voulais savoir s'il n'y aurait pas plus simple comme expression ou même comme méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
J'ai également un soucis avec l'année :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part (\b([0-9]{2}(([0-9]{2}))?)\b)
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.
Partager