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)
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)
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 : 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
Mais pas :
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
(\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.