|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() Inscription : mai 2005 Messages : 596 ![]() |
Bonjour,
j'essaye d'écrire une expression régulière pour valider le format d'un champ de type heure qui va de 00:00 à 36:59. Pour celà j'ai essayé vainement avec les scripts suivants : Code :
Quelqu'un pourrait-il m'apporter la lumière sur mes erreurs Merci d'avance pour toute aide. |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Il faut mettre des OR (|) pour gérer le fait que les trentaines ne s'arrêtent qu'à 6.
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
10
|
|
|
#3 | ||
|
Membre expérimenté
![]() François Inscription : février 2010 Messages : 306 ![]() |
Sinon on peut laisser Oracle le faire tout seul comme un grand.
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut
Le problème Ram7s, c'est que si ce n'est pas format date (genre vraiment n''imp "mfoirjamfoi"), ça claque en exception sur le cast en date au lieu de juste renvoyer KO...
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#5 |
![]() ![]() |
Et le format ce serait HH24:MI, pas MI:SS, et de facto les heures >= 24 provoquent une erreur de format.
La solution de McM me paraît la plus élégante.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : mai 2005 Messages : 596 ![]() |
Super! Merci McM car je creusais effectivement du côté des regexp pour pouvoir effectuer plusieurs vérifications génériques... Cela dit Rams7s c'est une solution à laquelle je n'avais pas penser et qui est assez astucieuse (faire une vérif avec le format mi:ss!!)...
Merci encore à tous pour votre aide! |
|
|
00
|
|
|
#7 | ||
|
Membre expérimenté
![]() François Inscription : février 2010 Messages : 306 ![]() |
Bonjour,
C'est pas que je veuille defendre ma solution a tout prix, mais: Les REGEX, c'est bien mais pas top. Par exemple, ici elle n'etait pas bonne du premier coup, si le prochain filtre c'est pour les duree entre 22:35 et 34:49, ca risque d'etre coton a ecrire et a maintenir pour LEK. Alors que lire directement 36:59, ca me donne des frissons dans le dos tellement c'est simple a comprendre et modifier si besoin. ![]() @pacman: Je suis d'accord, ca peut etre genant, j'ai du commenter un des tests de McM du coup. @Waldar: Le format, c'est celui qui va bien. On veux juste une base 60. Dans le meilleur des mondes, le client indique des besoins, pas des moyens techniques pour resoudre le probleme. Par contre, le truc qui peut faire la difference (en dehors du cas de pacman qui peut etre decisif), c'est le résultat avec un seul chiffre pour le premier membre: Code :
|
||
|
|
00
|
|
|
#8 |
![]() ![]() |
En fait j'étais passé à côté de l'intérêt de la solution à cause du mi:ss, mais après avoir compris j'aime beaucoup le côté astucieux de votre proposition.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 313 ![]() |
Bref, c'est vrai que la requête initiale devrait être corrigée
Code :
Dans la vrai vie je n'aime pas les choses détournées de la manière proposé ici, pensez à la maintenance du code aussi. |
||
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Houla.. mon erreur en effet, il manque une () sur le OR !!!!
Edit : Je rajoute le cas du 1 seul chiffre au début Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
20
|
|
|
#11 | ||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Du coup Ram7s, on peut envisager deux solutions :
- L'une mixte qui valide le format par regexp, puis implémente la règle de gestion par comparaison (à noter qu'une fois le format valide, on peut comparer sans to_date en paddant avec 0) : Code :
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com