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

VB.NET Discussion :

Expressions regulière multi-masque


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut Expressions regulière multi-masque
    Bonjour à tous,

    J'essai d'utiliser le systemes des expresssions regulière pour tester une chaine.
    Je cherche à tester la présence d'un chiffre ET d'une lettre, dans n'importe quel ordre.
    Le masque que j'essai
    ^([0-9]+[A-Za-z]+){1,10}$
    ne marche pas dans la mesrue ou il tiens compte de l'odre.
    C'est à dire que 0A est validé, mais pas A0.

    Quelle est la syntaxe pour faire un masque global (composé de sous masque ) ???

    Merci

    Bonne journée

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Par défaut
    Si tu souhaite verifier sur 2 digit avec un caractère alphabetique et un numérique dans n'importe quel sens essais ca :

    ^([0-9][A-z]|[A-z][0-9])${1}

    Le pipe (le caractère |) fonctionne comme un arbre, c'est à dire que dans le cas present, il verifie si ta chaine rentre dans le cadre [0-9][A-z] et si c'est pas le cas, il reprends du caractère ou il est partie pour la recherche et teste avec [A-z][0-9].

    Ca reponds à ta question ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    en parti seulement.
    car en effet si dans le cas présent ca marche, cela veut dire qu'il faut demultiplier toutes les combinaison possible ..

    si je veut ajouter un test sur les caractères spéciaux, alors il y plus de schéma possible ..
    ^([0-9][A-z][@&$]|[A-z][0-9][@&$])${1}
    ^([0-9][@&$][A-z]|[A-z][0-9][@&$])${1}
    ^([@&$][0-9][A-z]|[A-z][0-9][@&$])${1}

    et non, je suis sur x digit ..

    j'avais envisagé le |, mais sans plus d'idée ..
    j'ai vu passer la syntaxe (?: .. mais je comprend pas trop à quoi ca sert ..

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Par défaut
    En gros ce que tu veux faire, c'est sur une chaine de longeur non fixé ne pas avoir de caractère qui ne soit pas des caractère clavier standard c'est bien ca ?

    Dans ce cas la tu fait un ^([A-z]|[0-9]|[@&$]){1,}$

    Comme ca tu specifie que tu veux soit un caractère alpahbetique, soit un numérique, soit un spécial (dans le panel qui t'interesse) et que tu veux trouver ces sequence de une fois minimum à l'infini.

    C'est mieux ?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    c'est presque ca.
    dans une chaine de longueur non fixé, je veut m'assurer qu'il y ai au moin 1 lettre ET au moin 1 chiffre ET au moin 1 caractèrs spécials.
    et le filtre des caractères est déstinées à evoluer ..

    soit ca,
    ^([A-z]|[0-9]|[@&$]){1,}$

    mais avec des ET à la place des | et ou l'ordre des test n'est pas evalué ..

    idéalement, je verrais bien ca :
    ^([[A-z]+[0-9]+[@&$]+]){1,10}$

    mais voila, ca ne marche po
    la classe [[A-z]+[0-9]+[@&$]+] n'est pas evaluée comme souhaité ..

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Par défaut
    Le problème c'est que le + ne represente pas le ET logique.

    Ca deviens donc assez complexe, mais il y a aussi une solution toute simple.
    Pourquoi ne pas faire passer ta chaine dans 3 expression régulière et ensuite de faire un test logique sur le resultat bouléen ?

    Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim oExpRegAlpa As System.Text.RegularExpressions.Regex
    Dim oExpRegNum As System.Text.RegularExpressions.Regex
    Dim oExpRegSpe As System.Text.RegularExpressions.Regex
    Dim bResultat As Boolean = False
     
    Dim sChaineTest As String = "A0]"
     
    oExpRegAlpa = New System.Text.RegularExpressions.Regex("([A-z]){1,}")
    oExpRegNum = New System.Text.RegularExpressions.Regex("([0-9]){1,}")
    oExpRegSpe = New System.Text.RegularExpressions.Regex("([[-`]){1,}")
     
    bResultat = oExpRegAlpa.IsMatch(sChaineTest) And oExpRegNum.IsMatch(sChaineTest) And oExpRegSpe.IsMatch(sChaineTest)
    Evidemment fait attention à bien lister tes caractères spéciaux qui ne sont pas tous sur la même plage ^^.

    Qu'en pense tu ?

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

Discussions similaires

  1. Recherche recursive à l'aide des expressions reguliére
    Par titoff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/12/2005, 17h42
  2. [RegEx] aide pour une expression regulière
    Par hugo123 dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2005, 16h41
  3. ET dans une expression regulière
    Par kesako dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 13h57
  4. Problème expression regulière ??
    Par panaone dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 14h41
  5. Variables et Expression Regulière
    Par Temari dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 02h55

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