Maison > Java > javaDidacticiel > Pourquoi mon Java Regex ne correspond-il pas aux adresses e-mail ?

Pourquoi mon Java Regex ne correspond-il pas aux adresses e-mail ?

Susan Sarandon
Libérer: 2024-12-06 14:49:12
original
720 Les gens l'ont consulté

Why Doesn't My Java Regex Match Email Addresses?

Validation des e-mails Java Regex

Question

Un utilisateur a rencontré des difficultés à utiliser une regex pour la validation des e-mails en Java. Malgré la correspondance d'expression régulière lors d'une opération de « recherche et remplacement » dans Eclipse, il ne parvient pas à trouver les adresses e-mail à l'aide de la classe Java Matcher.

L'utilisateur a fourni l'expression régulière suivante :

\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
Copier après la connexion

En Java, le code qu'ils ont écrit est :

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!");
Copier après la connexion

Cependant, l'expression régulière ne correspond pas, que l'e-mail soit ou non bien formé ou non.

Réponse

L'expression régulière fournie est similaire à celle utilisée dans le code Java donné. Cependant, il existe quelques différences clés :

  • L'expression régulière fournie utilise des classes de caractères avec des accolades, telles que [A-Z0-9._%-] . En Java, ceux-ci doivent être échappés comme [A-Z0-9._%-] .
  • L'expression régulière fournie utilise le point comme caractère littéral ., qui doit être échappé comme \. en utilisant une double barre oblique inverse en Java.
  • L'expression régulière fournie utilise un caractère spécial b pour correspondre au début d'un mot, qui n'est pas nécessaire pour la validation de l'e-mail et peut être supprimé.

Le code Java suivant a été modifié pour résoudre ces problèmes :

Pattern p = Pattern.compile("[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}");
Matcher m = p.matcher("[email protected]");

if (m.find())
    System.out.println("Correct!");
Copier après la connexion

Avec ces modifications, l'expression régulière devrait désormais correspondre aux adresses e-mail en Java comme attendu.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal