Arobase et . dans email java
Babs
-
danimo -
danimo -
Bonjour,
Voila, je voudrais vérifier qu'il y a bien un @ et un . après dans un email mais ma fonction ne marche pas.
Voici le code :
Merci d'avance
Voila, je voudrais vérifier qu'il y a bien un @ et un . après dans un email mais ma fonction ne marche pas.
Voici le code :
public static boolean ArobasePoint(String adresse)
{
boolean booleen;
//Restriction a avoir dans l'adresse a saisir
Pattern mot = Pattern.compile("@+\\.");
//On regarde si l'adresse saisie correspond aux restrictions
Matcher mail = mot.matcher(adresse);
//Si conditions respectés alors on affiche que c'est bon autrement il y a une erreur
if (mail.find())
{
booleen = true;
}
else
{
booleen = false;
}
return booleen;
}
Merci d'avance
9 réponses
-
Re,
Avec la 1ère version de ton code, tu peux tester ce motif:
String motif = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$";
Ce qui permet d'effectuer les contrôles suivants:
- L'adresse doit commencer par des lettres quelconques (en minuscule ou majuscule),
n'importe quel chiffre, et les caractères "-" ou "_".
(mais combinées n'importe comment **)
- après l'arobase, le même contrôle mais sans "_"
et il faut impérativement au moins 2 caractères entre l'arobase et le point (**).
- aprés le point, il doit y avoir 2 ou 3 lettres majuscules ou miniscules.
Le contrôle de l'@ et du point est bon...
C'est loin d'être complet mais c'est un bon début...
Cordialement,
Dan -
Bonjour,
Essaie ceci:
public static boolean arobasePoint(String adresse) { Pattern mot = Pattern.compile("@*\\."); Matcher mail = mot.matcher(adresse); return mail.find(); }
Toutefois, note que:
1. Pour la vérification simple que tu souhaites, les regex ne sont pas vraiment nécessaires. Le code se simplifie dans ce cas comme suit (sans perte de fonctionnalité):
public static boolean arobasePoint(String adresse) { return adresse.indexOf('.')>adresse.indexOf('@'); }
2. Pour vérifier qu'un String est une adresse d'e-mail valide, c'est un chouïa plus compliqué. Le fait de vérifier l'existence d'un point suivant l'éperluette n'est pas suffisant.
++ -
Salut,
Si c'est une obligation d'utiliser Regex tu peux faire:
String adresse = "untel@msn.com"; String motif = "[@{1}[\\.{1}]]"; //@ doit exister exactement 1 fois, le . aussi // mais sont-ils au bon endroit ? Pattern pattern = Pattern.compile(motif); Matcher matcher = pattern.matcher(adresse); int nbreFois = 0; while(matcher.find()) { nbreFois++; } System.out.println("nbreFois = " + nbreFois); if(nbreFois == 2) { if(adresse.indexOf('.')>adresse.indexOf('@')) // merci sandul System.out.println("@ et . existent chacun une fois dans " + adresse + " et dans le bon ordre !!!"); else System.out.println("@ et . existent chacun une fois dans " + adresse + " mais dans le mauvais ordre !!!"); } else System.out.println("Soit @ ou . n'existe pas, ou les deux n'existent pas,\n" + "ou l'un des deux existe plus d'une fois,\n" + "ou les deux existent plus d'une fois dans \"" + adresse + "\"");
Cordialement,
Dan -
Merci mais la restriction concernant l'@ et le . ne marche pas :s!
Autrement c'est nikl :d
Merci de prendre le temps de me répondre -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Re,
public static boolean arobasePoint(String adresse) { //boolean booleen; //déclarer au niveau classe >> private static boolean booleen String motif = "[@{1}[\\.{1}]]"; //@ doit exister exactement 1 fois, le . aussi // mais sont-ils au bon endroit ? Pattern pattern = Pattern.compile(motif); Matcher matcher = pattern.matcher(adresse); int nbreFois = 0; while(matcher.find()) { nbreFois++; } if( (nbreFois == 2) && (adresse.indexOf('.')>adresse.indexOf('@')) ) // merci sandul { booleen = true; } else { booleen = false; } return booleen; }
Appel de la méthode:
String mail = "untel@msn.com"; arobasePoint(mail); if(booleen) System.out.println("@ et . existent chacun une fois dans " + mail + " et dans le bon ordre !!!"); else System.out.println("Pb @ et/ou .");
Dan -
Cela marche mais mtn je voudrais dabords gérer les @ voir si y en a qu'une sinon mettre un message d'erreur et seulement après vérifier si y a que un point autrement pareil mettre un message d'erreur.
Voila je sais que je suis chiant mais je veux que cela soit propre merci
Voici mon code pour l'@ ://Restriction a avoir dans l'adresse a saisir Pattern mot = Pattern.compile("[@{1}]"); //On regarde si l'adresse saisie correspond aux restrictions Matcher mail = mot.matcher(adresse);
Mais ça me met que c'est bon alors que quand je rentre 2 @ ça me met qu'elle est valide aussi alors que c'est censé etre mauvais..
Merci d'avance -
Re,
Il te faut une regex plus complexe si tu veux contrôler correctement une adresse e-mail, car il y a plein de RFC qui décrivent le format d'une adresse valide. Ce n'est pas évident dans un premier temps, mais les vérifications à faire sont nombreuses.
Je t'ai déjà répondu à ce sujet ici https://forums.commentcamarche.net/forum/affich-19236440-adresse-mail-en-java#p19266114 ... Prends la peine de lire avec attention les liens en évitant de dire "mais ça ne marche pas" dans les premières 5 minutes d'essai :-P En particulier, tu as une classe fonctionnelle complète fournie par Les Hazlewood (il ne te reste qu'à faire du copier coller). Plus simple que ça...
++ -
Ce que je demande et clair et net.
Je veux vérifier d'abords qu'il y a bien que un @ dans la phrase puis dans un second temps vérifier qu'il y a que un . derrière l'@.
La doc que vous avez donné ne m'aide en autant cas à faire cela...-
je re poste une réponse de 30/09/2010 qui s'est affichée plus haut et que tu n'as sans doute pas vue:
Re,
Avec la 1ère version de ton code, tu peux tester ce motif:
String motif = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$";
Ce qui permet d'effectuer les contrôles suivants:
- L'adresse doit commencer par des lettres quelconques (en minuscule ou majuscule),
n'importe quel chiffre, et les caractères "-" ou "_".
(mais combinées n'importe comment **)
- après l'arobase, le même contrôle mais sans "_"
et il faut impérativement au moins 2 caractères entre l'arobase et le point (**).
- aprés le point, il doit y avoir 2 ou 3 lettres majuscules ou miniscules.
Le contrôle de l'@ et du point est bon...
C'est loin d'être complet mais c'est un bon début...
Cordialement,
Dan
-