Maison >Java >javaDidacticiel >Pourquoi la validation de mon courrier électronique Java Regex échoue-t-elle, même si elle fonctionne dans Eclipse ?
Validation des e-mails Java Regex : pourquoi mon regex échoue-t-elle ?
Vous rencontrez un problème particulier où votre regex Java pour la validation des e-mails échoue systématiquement , bien qu'il fonctionne correctement dans Eclipse. Ce comportement peut être déroutant et nous allons explorer la solution.
L'expression régulière fournie est similaire aux modèles de validation d'e-mail couramment utilisés, dans lesquels vous essayez de faire correspondre la structure suivante : caractères alphanumériques majuscules, traits de soulignement, points ou traits d'union suivis d'un symbole "@", suivis de caractères alphanumériques, de points ou de traits d'union, et se terminant par un composant de domaine composé de 2 à 4 majuscules lettres.
Pattern p = Pattern.compile("\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"); Matcher m = p.matcher("[email protected]"); if (m.find()) System.out.println("Correct!");
Cependant, cette expression régulière semble échouer, potentiellement en raison de caractères spéciaux dans la chaîne de courrier électronique qui sont déguisés ou échappés.
Une solution utilisant une expression régulière plus complète.
Pour résoudre ce problème, nous pouvons utiliser une expression régulière plus robuste pour le courrier électronique validation :
public static final Pattern VALID_EMAIL_ADDRESS_REGEX = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); public static boolean validate(String emailStr) { Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr); return matcher.matches(); }
Cette expression régulière mise à jour adhère à la structure de courrier électronique spécifiée, mais gère en outre les caractères spéciaux plus efficacement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!