Regex

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Regex

Re: Regex

par moogli » 22 févr. 2012, 18:25

Justement non pas valide le 4123 or dans mes test Si :/

Ce qui, quand on y réfléchis, est normal, on match les deux premiers chiffres, on est dans le cas ou aucun des séparateur n'est présent et on match sur les deux derniers chiffres.

J'ai mis deux chiffres pour permettre 12h13 ou simplement 02h04 ^^

Doit y avoir moyen de faire avec les assertions je pense mais ça dépassée largement mes compétences la :/

@+

Re: Regex

par Berzemus » 22 févr. 2012, 12:16

4 digits doit être invalide ? Ca n'a pas l'air de coller avec les critères... si les 2 derniers chiffres DOIVENT être précédés d'un caractère non numérique, on peut toujours essayer ceci:

Code : Tout sélectionner

^[0-9]{1,2}([h.,:]?|[h.,:][0-9]{1,2})$
Après on peut y ajouter des petites choses autour pour filtrer un peu plus, mais en gros ça y est

Re: Regex

par moogli » 22 févr. 2012, 10:14

yop,

j'ai testé ça ^(\d){1,2}[h.,:]?((\d){1,2})?$

ça match
1h30
1,50
1,5
2h
2
2,00
2h00
15h30

a voir si cela peux te convenir
arf berzemus, pas mal, on juste le même soucis : un chiffre a 4 digits est valide :/
un soucis dans les alternatives ^^

@+

Re: Regex

par Berzemus » 22 févr. 2012, 10:04

Ceci ne convient pas ?

Code : Tout sélectionner

[0-9]+[h.:,]?[0-9]*
Il semble répondre à tous les cas proposés...

J'ai rajouté le double point parce que je sentais que le moment était venu de le faire. Et que 6:55 c'est l'heure de mon réveil.

Regex

par albat » 22 févr. 2012, 03:01

Bonjour,

J'ai toujours été allergique aux regex,
mais là, je crains de ne pouvoir m'en passer. :cry:

Je souhaite n’accepter que les chaines de caractère
qui valident les critères suivants :
- de 1 à 4 caractères
- le premier caractère est un chiffre
- peut contenir un seul caractère non numérique (facultatif) : le point (.), la virgule (,) ou la lettre h (h).

Vous l'aurez compris, je veux tester des durées exprimées en heures.
exemples valides : 1h30 ou 1,50 ou 1,5 ou 2h ou 2 ou 2,00 ou 2h00

J'ai construit la regex suivante, mais c'est pas encore tout à fait ça.

Code : Tout sélectionner

[0-9]+[h.,]?[0-9]*{1,4}
Merci pour votre aide,