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
628 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!

source:php.cn
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