Heim >Java >javaLernprogramm >Warum stimmt mein Java-Regex nicht mit E-Mail-Adressen überein?

Warum stimmt mein Java-Regex nicht mit E-Mail-Adressen überein?

Susan Sarandon
Susan SarandonOriginal
2024-12-06 14:49:12651Durchsuche

Why Doesn't My Java Regex Match Email Addresses?

Java Regex E-Mail-Validierung

Frage

Ein Benutzer ist auf Schwierigkeiten bei der Verwendung eines Regex für die E-Mail-Validierung in Java gestoßen. Trotz des Regex-Abgleichs in einem „Suchen und Ersetzen“-Vorgang in Eclipse werden mit der Java Matcher-Klasse keine E-Mail-Adressen gefunden.

Der Benutzer hat den folgenden Regex bereitgestellt:

\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

In Java lautet der von ihnen geschriebene Code:

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!");

Der reguläre Ausdruck stimmt jedoch nicht überein, unabhängig davon, ob die E-Mail wohlgeformt ist oder nicht.

Antwort

Der bereitgestellte reguläre Ausdruck ähnelt dem, der im angegebenen Java-Code verwendet wird. Es gibt jedoch einige wesentliche Unterschiede:

  • Der bereitgestellte reguläre Ausdruck verwendet Zeichenklassen mit geschweiften Klammern, wie zum Beispiel [A-Z0-9._%-] . In Java sollten diese als [A-Z0-9._%-] maskiert werden.
  • Der bereitgestellte reguläre Ausdruck verwendet einen Punkt als Literalzeichen., das als \ maskiert werden sollte. unter Verwendung eines doppelten Backslashs in Java.
  • Der bereitgestellte reguläre Ausdruck verwendet ein Sonderzeichen b, um den Anfang eines Worts zu finden, das für die E-Mail-Validierung nicht benötigt wird und entfernt werden kann.

Der folgende Java-Code wurde geändert, um diese Probleme zu beheben:

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!");

Mit diesen Änderungen sollte der reguläre Ausdruck jetzt mit E-Mail-Adressen in Java übereinstimmen als erwartet.

Das obige ist der detaillierte Inhalt vonWarum stimmt mein Java-Regex nicht mit E-Mail-Adressen überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn