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

C# Discussion :

Problème Regex numérique [Débutant]


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème Regex numérique
    Bonjour,

    J'ai besoin de faire un TextBox qui n'accepte que des chiffres donc après recherche, j'ai essayé l'utilisation d'expression régulière qui m'amène au même problème suivant :

    Ma textbox refuse les lettres et tout autres caractères mais les caractères qui se trouvent avec les chiffres au-dessus du clavier sont quand même accepter...

    Mon regex est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public bool Verifier(string chaine)
            {
                System.Text.RegularExpressions.Regex myRegex = new Regex("[1-9\b]");
                return myRegex.IsMatch(chaine);
            }
    Je l'utilise comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            private void tbxTest_KeyUp(object sender, KeyEventArgs e)
            {
     
                if (regex.Verifier(e.KeyCode.ToString()) == false)
                {
                    tbxTest.Text ="";
                    MessageBox.Show("Ce champ ne doit contenir que des chiffres.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                }
            }
    J'ai reussi a faire une texte box numérique sans regex, comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
            private bool pasNombreEntrer = false;
            private void tbxTest_KeyDown(object sender, KeyEventArgs e)
            {
                pasNombreEntrer = false;
     
                // Déterminer si la frappe est un numéro du clavier numérique .
                if ((e.KeyCode < Keys.NumPad1 || e.KeyCode > Keys.NumPad9))
                {
                    // Determine si le frappe est un backspace.
                    if (e.KeyCode != Keys.Back)
                    {
                        // Déterminer si la frappe est un numéro à partir du haut du clavier .
                        if (((e.KeyCode > Keys.D1 || e.KeyCode < Keys.D9) && (Control.ModifierKeys != Keys.Shift) 
                            && !(Control.IsKeyLocked(Keys.CapsLock))|| (e.KeyCode < Keys.D1 || e.KeyCode > Keys.D9))
                            //On ne peut pas utiliser Shift si caps lock est activé
                            || ((Control.ModifierKeys == Keys.Shift) && (Control.IsKeyLocked(Keys.CapsLock))))
                        {
                            // Une touche non numérique a été enclecher
                                pasNombreEntrer = true;
                        }
                    }
                }
            private void tbxTest_KeyPress(object sender, KeyPressEventArgs e)
            {
     
                if (pasNombreEntrer == true)
                {
                    //Le caractère est non numérique donc il n'est pas validé
                    e.Handled = true;
                    MessageBox.Show("Ce champ ne doit contenir que des chiffres.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
    Mais moi j'aimerais réussir a faire fonctionner le regex.

    Je vous remercie en avance pour l'aide qu vous m'apporterez.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    salut,

    essaye de voir ici je crois que c'est ce que tu cherche (c'est en anglais mais facile a comprendre )

    http://msdn.microsoft.com/fr-fr/libr...s.keycode.aspx

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par deado Voir le message
    salut,

    essaye de voir ici je crois que c'est ce que tu cherche (c'est en anglais mais facile a comprendre )

    http://msdn.microsoft.com/fr-fr/libr...s.keycode.aspx
    Merci pour ta réponse , mais je me suis déjà inspirer de cette page pour ma deuxième solution, mon problème se trouve surtout au niveau du regex.

  4. #4
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonsoir,

    Et sinon, arrêter d'utiliser une Textbox pour faire une saisie numérique et utiliser (par exemple) un NumericUpDown dont c'est l'objectif ?

    Cordialement !
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Bonsoir,

    Et sinon, arrêter d'utiliser une Textbox pour faire une saisie numérique et utiliser (par exemple) un NumericUpDown dont c'est l'objectif ?

    Cordialement !
    Merci, je ne connaissait pas NumericUpDown, j'avais déjà essayer une MakedTextBox, mais ce ne me permet pas de faire exactement ce que je veut.

    En faite j'aimerais savoir comment faire pour utiliser un regex car je pourrais être amener a formater des chaine de caractère, mais je dois déjà réussir a utiliser un regex qui me permet de faire cette saisie numérique.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir,
    si on reste sur l'idée de la Regex, à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
                    public bool Verifier(string chaine)
                    {
                        Regex myRegex = new Regex("[1-9]");
                        return myRegex.IsMatch(chaine);
                    }
     
                    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
                    {
                        if (Verifier(e.KeyChar.ToString()) == false)
                        {
                            e.Handled = true;
                            MessageBox.Show("Ce champ ne doit contenir que des chiffres.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                        }
                    }

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par chrismonoye Voir le message
    Bonsoir,
    si on reste sur l'idée de la Regex, à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
                    public bool Verifier(string chaine)
                    {
                        Regex myRegex = new Regex("[1-9]");
                        return myRegex.IsMatch(chaine);
                    }
     
                    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
                    {
                        if (Verifier(e.KeyChar.ToString()) == false)
                        {
                            e.Handled = true;
                            MessageBox.Show("Ce champ ne doit contenir que des chiffres.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                        }
                    }
    Merci !!!! ça fonctionne parfaitement!
    Le problème vient donc d'utlisation de e.KeyCode au lieu de e.KeyChar, c'est tellement logique...

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

Discussions similaires

  1. [RegEx] Problème regex et caractère \
    Par Kyom dans le forum Langage
    Réponses: 2
    Dernier message: 05/04/2007, 16h07
  2. Problème regex VSFTPD
    Par goldkey dans le forum Réseau
    Réponses: 1
    Dernier message: 19/01/2007, 17h55
  3. [RegEx] Problème regex url cliquable
    Par dorian53 dans le forum Langage
    Réponses: 5
    Dernier message: 16/11/2006, 19h17
  4. Problème Format Numérique lors d'import txt
    Par clemasson dans le forum Access
    Réponses: 3
    Dernier message: 11/10/2006, 11h31
  5. [RegEx] Problème Regex PCRE
    Par raptorman dans le forum Langage
    Réponses: 6
    Dernier message: 07/07/2006, 17h23

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