Paris on Rails 2008

Ouverture de session

Commentaires récents

Syndication
Flux XML

Expression reguliere validation date

Expression reguliere validation date
Posté par ruby_deb le Lundi, 18 Février, 2008 - 6:55pm. Débuter avec Rails

Bonjour,

J'ai un petit problème de validation de date.

/^[0-9]{4}[-][0-9]{2}[-][0-9]{2}$/ ceci marche et me permet de valider une date au format 01-01-1980

En revanche cela ne marche pas /^[0-9]{4}[/][0-9]{2}[/][0-9]{2}$/.

J'aimerais valider qu'une date est au format 01/01/1980

Comment puis je faire .

D'avance merci.



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
salut ! Y a pas un mélange
Auteur: 
kAworu
Date: 
Mar, 19/02/2008 - 12:01

salut !
Y a pas un mélange des 2 et des 4 dans ta regexp ?

tu peux remplacer [0-9] par \d, et [-] par - (car - a une signification particulière dans les character-class mais pas dans les regexp).
/^[0-9]{4}[-][0-9]{2}[-][0-9]{2}$/ pourrait être simplifié en /^\d{4}-\d{2}-\d{2}$/

Pour le problème c'est effectivement les / qui posent problèmes. Tu peux soit les échapper avec \ (comme l'a dit jasperiel) soit utiliser un autre délimiteur (comme #) pour ta regexp (cette notation est spécifique à Ruby):
%r#^\d{4}/\d{2}/\d{2}#

"if it moves, compile it."
- Gentoo


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Quoting
Auteur: 
jasperiel
Date: 
Lun, 18/02/2008 - 20:08

Tu ne nous donnes pas le log d'erreur mais je pense que c'est un problème de quoting avec cette syntaxe [1] : la regexp s'arrête au premier slash rencontré.
Ton éditeur ne fait pas la coloration syntaxique ?
Tu n'as pas de bug au runtime genre syntax error ?

Tu peux "échapper" ton slash avec un antislash, et au passage supprimer les [brackets] (ensemble de caractères) puisqu'il n'y en a qu'un dedans.
De plus, les marqueurs de comptage entre {curly braces} indiquent plutôt 1980/01/01 que 01/01/1980, je te recommande donc de remplacer le 4 par un 2 et remplacer le dernier 2 par un 4.

Je pense que ceci devrait marcher :
/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/
Enfin je sais pas, j'ai pas testé.

En cas de souci, la doc est là :
http://www.regular-expressions.info/reference.html
http://www.regular-expressions.info/ruby.html

[1] c'est du sucre syntaxique sur Regexp.new :
     tu peux toujours regarder la doc de Ruby
     http://ruby-doc.org/core-1.9/classes/Regexp.html


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Sondage
Lorsque je développe avec Ruby on Rails c'est principalement sous:
Linux
37%
Mac OS X
30%
Windows
32%
(Free|Open|Net) BSD
1%
Autre...
1%
Nombre de votes: 374

Qui est en ligne
Il y a actuellement 1 utilisateur et 45 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Hébergement et ressources techniques gracieusement fournis par la SSLL Nuxos Group ]