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 :

Controle adresse email


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Par défaut Controle adresse email
    Comment contrôler le format de saisie d'une adresse mail? Vérifier qu'elle respecte bien toto@toto.com

    Merci

  2. #2
    zl
    zl est déconnecté
    Membre éprouvé
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Par défaut
    Regardes du côtés des expressions régulières: Librairie regexp.


    Zl.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Par défaut
    je voulais tester EmailValidator mais ca a pas l'air de fonctionner

  4. #4
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Comme zl l'a dit, tu peux utiliser les expressions régulières, c'est à mon avis ce qu'il y a de plus simple :

    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
     
    import java.util.regex.*;
     
    ...
     
     
    String masque = "^[a-zA-Z]+[a-zA-Z0-9\\._-]*[a-zA-Z0-9]@[a-zA-Z]+"
                            + "[a-zA-Z0-9\\._-]*[a-zA-Z0-9]+\\.[a-zA-Z]{2,4}$";
    Pattern pattern = Pattern.compile(masque);
    Matcher controler = pattern.matcher(laSaisieDeLutilisateur);
    if (controler.matches()){
    //Ok : la saisie est bonne
     
    }else{
    //La c'est pas bon
    }
    Pas testé mais ça devrait marcher.

    Explication du masque :

    ^ : début de la ligne
    [a-zA-Z]+ : une lettre (au moins une)
    [a-zA-Z0-9\\._-]* : une lettre ou un chiffre ou un "." ou un "_" ou un "-" autant de fois que l'on veut (0 à n)
    [a-zA-Z0-9]+ : une lettre ou un chiffre (au moins 1)
    @ : le symbole @ (obligatoire)
    [a-zA-Z]+ : une lettre (au moins une)
    [a-zA-Z0-9\\._-]* : une lettre ou un chiffre ou un "." ou un "_" ou un "-" autant de fois que l'on veut (0 à n)
    [a-zA-Z0-9]+ : une lettre ou un chiffre (au moins 1)
    \\. : un "." (obligatoire)
    [a-zA-Z]{2,4} : de 2 à 4 lettres
    $ : fin de ligne

  5. #5
    Membre éprouvé Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Par défaut
    Salut,
    juste une petite remarque par rapport au pattern précédent: Une addresse email peut commencer par un "." par exemple... donc ton expression risque de refuser des adresses valides.
    De mon coté je propose ce code (un peu plus laxiste surement):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public static boolean isValid(String email)
    {
    	if( email!=null && email.trim().length()>0 )
    		return email.matches("^[a-zA-Z0-9\\.\\-\\_]+@([a-zA-Z0-9\\-\\_\\.]+\\.)+([a-zA-Z]{2,4})$");
    	return false;
    }
    De toute façon, la seule solution pour vérifier si une adresse email est valide (et existe) est d'envoyer un email et voir si ca plante ou pas, ce qui n'est pas terrible (Si je me trompes je serais ravi de l'apprendre, dc n'hésitez pas!).
    +

  6. #6
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par manube
    Salut,
    juste une petite remarque par rapport au pattern précédent: Une addresse email peut commencer par un "." par exemple... donc ton expression risque de refuser des adresses valides.
    T'es sur?

    Enfin bon, il est vrai qu'on peut écrire l'expression de plusieurs manières.

    Edit :

    Extrait de la RFC 822, document du W3C qui définit les spécifications des emails :

    6. Address Specification
    6.1. Syntax
    address = mailbox ; one addressee
    / group ; named list

    group = phrase ":" [#mailbox] ";"

    mailbox = addr-spec ; simple address
    / phrase route-addr ; name & addr-spec

    route-addr = "<" [route] addr-spec ">"

    route = 1#("@" domain) ":" ; path-relative

    addr-spec = local-part "@" domain ; global address

    local-part = word *("." word) ; uninterpreted
    ; case-preserved

    domain = sub-domain *("." sub-domain)

    sub-domain = domain-ref / domain-literal

    domain-ref = atom ; symbolic reference




    specials = "(" / ")" / "<" / ">" / "@" ; Must be in quoted-
    / "," / ";" / ":" / "\" / <"> ; string, to use
    / "." / "[" / "]" ; within a word.

    atom = 1*<any CHAR except specials, SPACE and CTLs>

    quoted-string = <"> *(qtext/quoted-pair) <">; Regular qtext or
    ; quoted chars.

    qtext = <any CHAR excepting <">, ; => may be folded
    "\" & CR, and including
    linear-white-space>

    quoted-pair = "\" CHAR ; may quote any char

    word = atom / quoted-string


    Selon cette grammaire : moi je comprend qu'une adresse ne peut pas commencer par un point.

  7. #7
    Membre éprouvé Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Par défaut
    Désolé, pourtant il me semblait avoir déjà vu ca qque part (je vais essayer de la retrouver pour voir si j'ai halluciné ou pas).
    Merci pour ces précisions.

  8. #8
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Et je pense par contre qu'une adresse du genre


    test@sub.domain.com est correcte
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  9. #9
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par Hikage
    Et je pense par contre qu'une adresse du genre


    test@sub.domain.com est correcte
    Oui elle est correcte, et elle est reconnu comme telle par le pattern que j'ai mis.

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Par défaut
    salut, oui les points en debut d'adresse sont bien valide.

    La rfc 822 est obsolete.
    aujourd'hui il peut meme y avoir des espace dans les adresse mail.

    voici quelques liens:
    la rfc822: ftp://ftp.rfc-editor.org/in-notes/rfc3696.txt
    et l'erratum: http://www.rfc-editor.org/cgi-bin/er...ch.pl?rfc=3696


    Je suis a la recherche de l'expression réguliere qui marchera tout le temps.
    Et a mon avis comme beaucoup d'entre nous.

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

Discussions similaires

  1. controle de saisie d'une adresse email valide
    Par nassing dans le forum jQuery
    Réponses: 1
    Dernier message: 26/05/2011, 14h52
  2. (msn) validité d'une adresse email
    Par t26 dans le forum Messagerie instantanée
    Réponses: 2
    Dernier message: 10/09/2005, 13h05
  3. [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