Heim >Java >javaLernprogramm >Warum schlägt meine Java-Regex-E-Mail-Validierung fehl, obwohl sie in Eclipse funktioniert?

Warum schlägt meine Java-Regex-E-Mail-Validierung fehl, obwohl sie in Eclipse funktioniert?

DDD
DDDOriginal
2024-12-03 04:55:13166Durchsuche

Why Is My Java Regex Email Validation Failing, Even Though It Works in Eclipse?

Java-Regex-E-Mail-Validierung: Warum schlägt mein Regex fehl?

Sie stoßen auf ein seltsames Problem, bei dem Ihr Java-Regex für die E-Mail-Validierung ständig fehlschlägt , obwohl es in Eclipse ordnungsgemäß funktioniert. Dieses Verhalten kann rätselhaft sein, und wir werden uns mit der Lösung befassen.

Der bereitgestellte reguläre Ausdruck ähnelt häufig verwendeten E-Mail-Validierungsmustern, wobei Sie die folgende Struktur anstreben: alphanumerische Großbuchstaben, Unterstriche, Punkte oder Bindestriche, gefolgt von einem „@“-Symbol, gefolgt von weiteren alphanumerischen Zeichen, Punkten oder Bindestrichen und endend mit einer Domänenkomponente bestehend aus 2 bis 4 Großbuchstaben Buchstaben.

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

Dieser reguläre Ausdruck scheint jedoch fehlzuschlagen, möglicherweise weil Sonderzeichen innerhalb der E-Mail-Zeichenfolge maskiert oder maskiert sind.

Eine Lösung mit einem umfassenderen Regexp

Um dieses Problem zu beheben, können wir einen robusteren regulären Ausdruck für E-Mails verwenden Validierung:

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();
}

Dieser aktualisierte reguläre Ausdruck hält sich an die angegebene E-Mail-Struktur, verarbeitet aber zusätzlich Sonderzeichen effektiver.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine Java-Regex-E-Mail-Validierung fehl, obwohl sie in Eclipse funktioniert?. 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