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

avec Java Discussion :

Verifier la régularité d'un mail saisi


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 261
    Par défaut Verifier la régularité d'un mail saisi
    Bonsoir,
    Il y a moyen de le faire via des packages, mais bon je voulais me faire du code pour du code.
    Aussi j'ai taper ça:
    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
    String saisieUtilisateur = JOptionPane.showInputDialog("Saisir une adresse mail :");
    		System.out.println(saisieUtilisateur);
    		int longueurSaisieUtilisateur = saisieUtilisateur.length();
     
     
     
    		for (int i = 0; i < longueurSaisieUtilisateur; i++) {
    			char unCaractere = saisieUtilisateur.charAt(i);
    			if (unCaractere == '@') {
    				int posArobas = saisieUtilisateur.indexOf(unCaractere);
    				i = longueurSaisieUtilisateur;
    				System.out.println(posArobas);
    				for (int j = 0; j < longueurSaisieUtilisateur; j++) {
    					char unCaractere2 = saisieUtilisateur.charAt(j);
    					if (unCaractere2 == '.') {
    						int posPoint = saisieUtilisateur.indexOf(unCaractere2);
    						j=longueurSaisieUtilisateur;
    						System.out.println(posPoint);
     
    						if (posPoint > posArobas && posArobas > 0 && posPoint > 2
    								&& longueurSaisieUtilisateur >= 6 ) {System.out.println("mail correct");
    						}else if (posPoint < posArobas ){
    							System.out.println("mail incorrect");
    						}
    					}
    				}
    			}
    		}//System.out.println("mail incorect");
    		if (longueurSaisieUtilisateur < 6) {
    			System.out.println("mail incorrect"); 
    		}
    Le souci est que tout n'est pas verrouillé, 2 @@ passent. Après je pense que j'ai un souci avec mon else. Du coup il y a sans doute un surplus.

    Si quelqu'un pouvait m'épurer un peu ces lignes, en mettant en lumière mes erreurs. C'est sûr, il y en a. Je prends. Merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Salut,

    2 méthodes:

    -Comptage des occurences de '@'

    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
    public static void occurences(String motif)
          {
             nbreMotifs = 0;
             info = "\nRECHERCHE DU MOTIF \""  + motif + "\""  + " dans la cha\u00eene:\n"
                      + "\"" + saisieUtilisateur + "\"\n";
     
             pattern = Pattern.compile(motif);
             matcher = pattern.matcher(saisieUtilisateur);
             while(matcher.find())
             {
                nbreMotifs++;
             }
             info+= "\n\"" + motif + "\"" + " existe " + nbreMotifs + " fois dans \""
                      + saisieUtilisateur + "\"\n";
          }

    -Méthode erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void erreur(String libErr)
          {
            Toolkit.getDefaultToolkit().beep();
             info = libErr + "\n>>>> RESSAISIR";
             erreur.showMessageDialog(null,info,"Erreur",JOptionPane.ERROR_MESSAGE);
          }


    -Ton code avec quelques modifs et commentaires, plus l'ajout du comptage.

    Le code est cencé être dans la méthode main(.....)

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    /*import java.util.regex.*;
           import java.awt.Toolkit;
     
           ......
           .......
          
          
           public class LaClassePrincipale
            {
            ......
            .....
               private static int nbreMotifs = 0;
               private static int nbreArob = 0;
               private static int nbrePoint = 0;
               private static String saisieUtilisateur = "";
               private static String info = "";
               private static String info1 = "";
               private static String info2 = "";
               private static JOptionPane information, attention, erreur;
               private static String libErr = "";
               .....
               ......  
            public static void main(String args[])
            {
              ......
              .......*/
     
     
     
             boolean encore = true; 
             saisieUtilisateur = "";
             int longueurSaisieUtilisateur = 0;
     
             while(encore)
             {
                try
                {
                  saisieUtilisateur = JOptionPane.showInputDialog("Saisir une adresse mail :");
                   System.out.println(saisieUtilisateur);
                   // suppression éventuels espces saisis:
                   saisieUtilisateur = saisieUtilisateur.replaceAll(" ", "");
                   longueurSaisieUtilisateur = saisieUtilisateur.length();
     
                   if (saisieUtilisateur.equals(""))
                   {
                      encore = false;
                      JOptionPane.showMessageDialog(null, "FIN DE LA SAISIE");
                      break;
                   }
     
                }
                    catch(NullPointerException npe)
                   {
                      encore = false;
                      JOptionPane.showMessageDialog(null, "FIN DE LA SAISIE (<Annuler>");
                      break;
                   }
                encore = true;
     
                   // Compter les occurrences de '@' en utilisant regex     
                nbreArob = 0;
                String motif = "@";
     
                occurences(motif);
                nbreArob = nbreMotifs;
                info1 = info;
     
     
                // Compter les occurrences de '.' en utilisant regex
                nbrePoint = 0;
                motif = "\\.";
     
                occurences(motif);
                nbrePoint = nbreMotifs;
                info2 = info;
     
                if (nbreArob == 1 && nbrePoint == 1)
                {   
                  for (int i = 0; i < longueurSaisieUtilisateur; i++)
                   {
                      char unCaractere = saisieUtilisateur.charAt(i);
                      if (unCaractere == '@')
                      {
                         //int posArobas = saisieUtilisateur.indexOf(unCaractere); // on l'a déja avec i
                         int posArobas = i;
                         System.out.println("posArobas = " + posArobas);
                         i = longueurSaisieUtilisateur;
                         //System.out.println(posArobas);
                         for (int j = 0; j < longueurSaisieUtilisateur; j++)
                         {
                           char unCaractere2 = saisieUtilisateur.charAt(j);
                            if (unCaractere2 == '.')
                            {
                               //int posPoint = saisieUtilisateur.indexOf(unCaractere2); // idem c'est j
                               int posPoint = j;
                               System.out.println("posPoint = " + posPoint);
                               j=longueurSaisieUtilisateur;
                               //System.out.println(posPoint);
     
                              if (posPoint > posArobas && posArobas > 0 && posPoint > 2
                               && longueurSaisieUtilisateur >= 6)
                               {
                                  //System.out.println("mail  " + saisieUtilisateur + " CORRECT");
                                  info = "mail  " + saisieUtilisateur + " CORRECT";
                                 JOptionPane.showMessageDialog(null, "mail  " + saisieUtilisateur + " CORRECT\n");
                               }
                               else
                                  //if (posPoint < posArobas )  // pourquoi ? cas impossible apres else
                               {
                                  erreur("mail  " + saisieUtilisateur + " INCORRECT\n");
                                  //JOptionPane.showMessageDialog(null, "mail  " + saisieUtilisateur + " INCORRECT\n
                                  //+ ">>>> RESSAISIR");
                               }
                            }
                         }
                      }
                   }
                }
                if (nbreArob != 1)
                {
                   erreur(info1);
                   //javax.swing.JOptionPane.showMessageDialog(null,info1 + ">>>> RESSAISIR");
                }
                if (nbrePoint != 1)
                {
                   erreur(info2);
                   //javax.swing.JOptionPane.showMessageDialog(null,info2 + ">>>> RESSAISIR");
                }
     
               /*if (longueurSaisieUtilisateur < 6) // déjà testé et signalé INCORRECT
                {
                   JOptionPane.showMessageDialog(null, "mail  " + saisieUtilisateur + " INCORRECT"); 
                }  */
             }
    Il y a certainement d'autres contrôles à faire, par exemple prévoir les adresses de type abc.com.fr etc...

    Cordialement,

    Dan

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    pourquoi ne pas utiliser les expressions régulières?

  4. #4
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public boolean isValidMail( String mail ) {
       RegExp mailexp = "[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?"
       return mail.matches( mailexp );
    }

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 261
    Par défaut
    Merci Dan.
    C'était dans ce sens que j'allais. Mais après oui, vu toutes les exceptions, l'utilisation des expressions régulières simplifie le truc.

    Pour te répondre Thomas, c'était justement dans l'idée de le tenter avec des méthodes propres.

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

Discussions similaires

  1. [SQL-Server] verifier si une partie du text saisi appartient a une liste des valeurs
    Par manel ingenieur dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/12/2010, 10h47
  2. verifier l'appartenance d'une @mail au carnet outlook
    Par benpinta dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 08/11/2007, 15h43
  3. verifier l'appartenance d'une @ mail au carnet outlook
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2007, 14h44
  4. [Mail] verifier le format d'un mail
    Par viny dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2006, 17h04
  5. verifier champ saisie
    Par grellierj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/02/2005, 12h07

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