Expressions régulières :-/ avec des dates

Expressions régulières :-/ avec des dates - C - Programmation

Marsh Posté le 21-02-2004 à 14:26:58    

'lu tout le monde :hello:
Bon..j'ai besoin des expressions régulières afin de vérifier la conformité des certaines dates. Je le fais en C avec la librairie regex GNU.
 
Bon, mon problème, c'est que je galère un peu. Je dois reconnaitre une periode de la forme:
JJ/MM/AAAA-JJ/MM/AAAA
et mon pattern est :  
 
 
"^\\(\\([0-2][1-9]\\)\\|\\(3[01]\\)\\|\\([1-9]\\)\\)\\?/\\(0[0-9]\\)\\|\\(1[0-2]\\)\\?/\\([1-2][0-9][0-9][0-9])\\?-\\(\\([0-2][1-9]\\)\\|\\(3[01]\\)\\|\\([1-9]\\)\\)\\?/\\(0[0-9]\\)\\|\\(1[0-2]\\)\\?/\\([1-2][0-9][0-9][0-9])\\.*$"
 
 
seulement il y a des periodes qui sont refusées alors qu'elles ne devraient pas, par exemple :
31/12/2003-07/01/2004
 
 
Enfin bon, je pette un peu un cable avec ces trucs là  :pt1cable:  
 
 
Un idée ? Si a la limite vous auriez des exemples pour les dates..

Reply

Marsh Posté le 21-02-2004 à 14:26:58   

Reply

Marsh Posté le 21-02-2004 à 15:17:18    

Je ne connais pas la librairie "regex" donc sur ce point je ne pourrais pas t'aider.
 
Quand j'ai eu besoin d'utiliser des dates, j'ai écris ma propre fonction de test.
 
Si ton format est "JJ/MM/AAAA-JJ/MM/AAAA", tu peux commencer par verifier la taille de la chaîne qui doit être de 21 (10+1+10) caractères.
 
Et ensuite tester la première date et ensuite la seconde (qui se trouve en chaîne+10) avec une fonction relativement simple :
 
chaîne[0] doit être un chiffre (chaîne[0] >= '0' && chaîne[0] <= '9').
etc ...
 
Bon c'est peut être pas très propre mais ça marche plutôt bien et c'esttèrs simple à coder.

Reply

Marsh Posté le 21-02-2004 à 16:01:52    

Pourquoi pas ces patterns (- strict au + strict):
 
^[0-9]{2}/[0-9]{2}/[0-9]{4}\-[0-9]{2}/[0-9]{2}/[0-9]{4}.*$
 
ou:
 
^[0-3][0-9]/[0-1][0-9]/[0-9]{4}\-[0-3][0-9]/[0-1][0-9]/[0-9]{4}.*$
 
ou:
 
^(([012][0-9])|(3[0-1]))/((0[1-9])|(1[0-2]))/[0-9]{4}\-(([012][0-9])|(3[0-1]))/((0[1-9])|(1[0-2]))/[0-9]{4}.*$
 
Je ne connais pas la librairie regex, mais assure toi:
 
- D'utiliser les regex étendues.
- La possibilité d'extraire les sous-chaines d'une chaine matchée avec les parenthèses.


Message édité par kfman le 21-02-2004 à 16:24:14
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed