Heim >Java >javaLernprogramm >Warum schlägt meine Java-Regex-E-Mail-Validierung fehl, obwohl sie in Eclipse funktioniert?
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!