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

Collection et Stream Java Discussion :

[Regex] Validaton d'adresse email


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur études
    Inscrit en
    Mars 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2008
    Messages : 46
    Par défaut [Regex] Validaton d'adresse email
    Salut tout le monde,

    j'ai un code source que j'essaie de le modifier pour qu'il me retourne une certaine valeur,

    j'utilise le package: org.apache.regexp.RE

    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public static boolean isFormatLoginRight(String pLogin) {
            final RE vRegexRib = new RE("[@._\\x2da-zA-Z0-9]{8,50}");
     
            if (!vRegexRib.match(pLogin)) {
                return false;
            }
     
            return true;
        }
    J'ai essayé de passer en paramètre une chaîne dont certains caractères sont accentués, et la méthode me retourne tjrs true !! Est-ce normal?


    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ce code autorise tout en raison de la présence du . dans la regexp. De plus, sache que vérifier la validité d'une adresse email est pas un mince affaire. recherche dans ces forums et tu comprendra.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur études
    Inscrit en
    Mars 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2008
    Messages : 46
    Par défaut
    Y a t-il pas moyen d'ajouter le point au motif ?? caractères d'échappement...
    concernant toujours les expressions régulières: je cherche une solution pour permettre le parsing qu'à partir d'un rang précis (3e au 4e caractère).

    Merci tchize_

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    LE \ sert d'échappement dans les expression régulière. Je te suggère de regarder du coté des expression réguliere dans la javadoc. De plus, il est quasiment impssoble de valider fiablement une adresse email avec une expression régulière.

  5. #5
    Membre averti
    Profil pro
    Directeur de projet
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut
    Hello,

    Celle-ci fonctionne pas mal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static boolean checkEmailPattern(String emailToCheck) {
            boolean returnedValue = false;
            Pattern EMAIL_PATTERN = Pattern.compile("^\\w+([_\\.-]\\w+)*@(\\w+([_\\.-]\\w+)*)\\.\\w+");
            if (EMAIL_PATTERN.matcher(emailToCheck).matches()) {
                returnedValue = true;
            }
     
            return returnedValue;
        }
    A plus,
    Mathieu

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par aragon Voir le message
    Hello,

    Celle-ci fonctionne pas mal :
    Elle est surtout un bel example de pourquoi il fait lire le RFC 2821 section 2.3.10 avant d'écire du code qui valide une adresse email.

    Voilà un florilège d'adresses emails valide et le comportement de ta méthode face à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    abc+def@example.com		checkEmailPattern=false
    abc123@example.com		checkEmailPattern=true
    joe&associates@example.com		checkEmailPattern=false
    "Abc\@def"@example.com		checkEmailPattern=false
    "Fred Bloggs"@example.com		checkEmailPattern=false
    "Joe\\Blow"@example.com		checkEmailPattern=false
    "Abc@def"@example.com		checkEmailPattern=false
    customer/department=shipping@example.com		checkEmailPattern=false
    $A12345@example.com		checkEmailPattern=false
    !def!xyz%abc@example.com		checkEmailPattern=false
    _somename@example.com		checkEmailPattern=true
    Tu ne réussi que deux tests, la présence d'un _ en tête et la présence de chiffres.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur études
    Inscrit en
    Mars 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2008
    Messages : 46
    Par défaut
    J'ai fait une combinaison des solutions proposé et ça marche bien.

    Merci à vos tous

  8. #8
    Membre averti
    Profil pro
    Directeur de projet
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut
    Hello,

    Effectivement elle n'est pas parfaite... Je ne savais pas que des adresses du genre :
    était possible... Je viens de checker dans le RfC 2822 Section 3.4.1.

    Je viens de tomber sur ce lien qui peut être intéressant : http://regexlib.com/DisplayPatterns.aspx

    Merci pour l'info en tout cas.
    A plus,

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

Discussions similaires

  1. [RegExp] Regex de contrôle de format adresse email
    Par renaud26 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2012, 11h03
  2. Réponses: 1
    Dernier message: 24/02/2011, 14h41
  3. [REGEX] Extraction d'une adresse email
    Par ploxien dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/11/2008, 17h32
  4. [langage] vérifier une adresse email
    Par GMI3 dans le forum Langage
    Réponses: 10
    Dernier message: 19/10/2003, 18h06

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