IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

Assert Regex pour un prix


Sujet :

Doctrine2 PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut Assert Regex pour un prix
    Bonjour à tous,

    J'essaye de mettre un Assert sur l'attribut Prix de mon objet.
    Je veux vérifier que la saisie de l'utilisateur correspond bien à un prix, c'est à dire : un ou plusieurs chiffres suivi(s) éventuellement d'un point et d'un ou deux chiffres.
    Logiquement, je fais donc ceci :
    @Assert\Regex("([0-9]+([.][0-9]{2})?)")
    La il me gueule dessus, je suis obligé d'ajouter des / de chaque côté :

    @Assert\Regex("/([0-9]+([.][0-9]{2})?)/")
    La, je peux taper : 12m50458, il le prend quand même. Bon bon bon. J'ai du louper un truc ?

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Par défaut
    Vérifie que tout est ok avec le script fourni avec symfony app/check.php à effectuer lors de l'installation.
    Pour les Assert et la validation, l'extension intl de PHP est nécessaire et il y a quelque fois des soucis (j'ai eu le problème avec Wamp personnellement).

    Le cas échéant, peux-tu copier ton code ici?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Merci pour ta réponse KzrData
    Les Asserts fonctionnent bien dans mon projet.

    Je pense que je suis une bille en expression régulière.

    Je viens de la refaire patiemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Assert\Regex("#[0-9]+(\.[0-9]{1,2})?#")
    Au moins un ou plusieurs chiffres [0-9]+
    suivi d'éventuellement ()?
    un point et 1 ou deux chiffres \.[0-9]{1,2}

    J'ai raté un truc ?

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Bonjour,

    franchement je suis pas expert en symfony et ta regex semble correcte si ce n'est l'absence de ^ et $ pour indiquer le début et la fin de ta pattern, soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Assert\Regex("/^[0-9]+(\.[0-9]{1,2})?$/")
    Sans ces indications 12m50458 sera correct car il contiendra des parties vérifiées par ta pattern (ie: 1,2,12,5,0,4,5,8,50,04,45,58,504,045,458,5045,0458,50458 pour être exhaustif)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Merci pour ta réponse CosmoKnacki
    Malheureusement, même avec tes indications (ajout du début et de la fin), "12m50" passe toujours

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Mince alors. je ne peux pas t'aider plus car je suis présentement en train de lire le Symfony Book (c'est en anglais, c'est l'horreur)

    Bonne chance

    (EDIT: tiens en fait il y a une version française )

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut
    et avec ceci :
    ça répond au besoin ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Bonjour rawsrc,

    Merci pour ta réponse.
    Malheureusement, "12m5" passe toujours

  9. #9
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    je pense que tu as un problème ailleurs parce qu'avec ce code php ne se plante pas et rejette 12m50 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pattern = '/^[\d]*[,.]?[\d]{2}$/';
    preg_match($pattern, '12,50', $matches); // $matches = array([] => 12,50)
    preg_match($pattern, '12.50', $matches); // $matches = array([] => 12.50)
    preg_match($pattern, '1250', $matches);  // $matches = array([] => 1250)
    preg_match($pattern, '12m50', $matches); // $matches = array()

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    En fait, je n'utilise pas php directement, c'est une annotation Symfony @Assert.

    Cela fonctionne car j'utilise d'autres asserts et l'expression que tu m'as donné contrôle bien des saisies avec ce Assert mais pas le "12m5"

    C'est incompréhensible

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Bon ben pour info, il fallait juste ne pas déclarer le prix avec le type "money" dans le formulaire symfony.
    En mettant "text", les Regex passent mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $builder->add('prix',  'text')
    Débile...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regex pour nettoyer des requêtes SQL
    Par gaboo_bl dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/03/2007, 12h03
  2. Utiliser Regex pour remplacement
    Par soveste dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 19/03/2007, 09h48
  3. [Notepad++] utiliser regex pour remplacer des caractères
    Par ilood dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 04/02/2007, 04h06
  4. [RegEx] Regex pour les accents et autres
    Par yule dans le forum Langage
    Réponses: 4
    Dernier message: 21/08/2006, 15h47
  5. Meilleur type de données pour un prix
    Par linar009 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/08/2006, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo