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

Discussion :

Problème d'expression régulière

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut Problème d'expression régulière
    Bonjour,

    Je recupere le texte d'un lineedit, pour l'ecrire ensuite dans un fichier. Mais avant, je voudrais verifier qu'il ne contient que des chiffres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QString tel;
    tel = ui->lineEdit_3->text();
    if (tel.contains(QRegExp("[a-zA-Z]*")))
    QMessageBox::information(this,("Info"), ("erreur"));
    Mais il m'affiche "erreur" quoi que j'inscrive...
    Je fais quoi de mal ?

    Merci d'avance,
    Tres cordialement,

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Là tu ne vérifies pas qu'"il ne contienne que des chiffres" mais qu'"il ne contienne pas de lettres". Je ne suis pas très calé en QRegExp mais en tout cas faut faire ce qu'on dit sinon on laisse des failles.
    Je ne réponds donc pas à ta question "qu'est-ce que j'ai fait de mal" parce que je ne vois pas.

    Par contre pour faire ce que tu dis donc, j'essaierais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!tel.contains(QRegExp("^\\d+$")))
        QMessageBox::information(this,("Info"), ("erreur"));
    Je laisse quelqu'un d'autre répondre à ta question A priori, je dirais que c'est à cause de l'étoile, qui veut dire "0 ou +". A remplacer par le + (1 ou +). A cause de l'étoile ça me parait logique que cette expression soit toujours vraie.

  3. #3
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    ça semble marcher en ajoutant un ! au début.
    Merci beaucoup ;-)

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    "Rajouter un !" ça ne veut pas dire grand chose (à part complètement inverser le test), je suis sceptique sur le fait que "ça marche", peux-tu partager la solution complète et la traduction en français ? (si blabla ne contient pas truc alors erreur). Merci

  5. #5
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Avec ce code, pas de de message d'erreur uniquement si tel (QString) ne contient que des chiffres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (!tel.contains(QRegExp("^\\d+$")))
                QMessageBox::information(this,("Téléchargement"), ("erreur"));

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Ah ok, donc t'as repris ce que j'avais dit, j'ai cru que t'avais juste rajouté un "!" à ce que t'avais fait. Là je suis d'accord.

    Une autre façon, peut-être moins lourde que la vérif par regexp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bool isInt;
    tel.toInt(&isInt); // conversion en entier qu'on ne sauvegarde pas, seule la réussite ou non nous intéresse
    if (!isInt)
        QMessageBox::information(this,("Téléchargement"), ("erreur"));
    La conversion foire même s'il y a une virgule ou un point (ça convertit par les décimaux en entier quoi) par contre ça accepte les espaces autour.

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

Discussions similaires

  1. petit problème d'expression régulière
    Par stoyak dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2006, 11h20
  2. [regexp] petit problème d'expression régulière
    Par LE NEINDRE dans le forum Langage
    Réponses: 14
    Dernier message: 16/12/2005, 10h33
  3. Problème d'expression régulière
    Par SiM07 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 17h57
  4. Problème d'expression régulière
    Par Pymm dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 11/10/2005, 15h04
  5. Problème d'expression régulière
    Par Neitsa dans le forum Général Python
    Réponses: 3
    Dernier message: 11/08/2005, 14h29

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