regex für die Validierung von E-Mails [duplizieren]

7

Ich habe den Regex unten für eine wirklich einfache Email-Validierung geschrieben. Ich plane, einen Bestätigungslink zu senden.

%Vor%

Ich würde es jedoch gerne aus dem aktuellen Zustand heraus verbessern, weil eine solche Zeichenfolge nicht das gewünschte Ergebnis liefert:

test, mein.name + test @ gmail-etwas.co.uk, test

Der "Test" -Teil ist unerwünscht in der Übereinstimmung enthalten. Ich experimentierte erfolglos mit Wortgrenzen.

  1. Wie soll ich ändern?
  2. Obwohl ich das einfach gehalten habe, gibt es irgendwelche gültigen E-Mail-Formate, die es ausschließen würde?

Danke!

    
chipotle_warrior 03.02.2009, 17:34
quelle

9 Antworten

1

Statt. Versuche, jedes Zeichen außer \ s (Leerzeichen) zu finden:

%Vor%     
Martin Brown 03.02.2009, 17:44
quelle
15

Es ist ein viel komplizierter !!! Siehe Mail :: RFC822 :: Adresse und sei verängstigt ... sehr verängstigt.

    
an0nym0usc0ward 03.02.2009 17:40
quelle
6

Fast nichts, was Sie verwenden, das kurz genug ist, um einen Blick darauf zu werfen, wird WIRKLICH eine E-Mail-Adresse validieren. Nachdem das gesagt ist, hier ist, was ich normalerweise verwende:

%Vor%

Es ist die integrierte Regex für den regulären Ausdruck-Validierer von ASP.NET für E-Mail-Adressen.

HINWEIS: Viele der in diesem Thread angegebenen Regex haben möglicherweise in den 90er Jahren funktioniert, aber TLDs dürfen in der heutigen Web-Umgebung weniger als 2 Zeichen und mehr als 4 Zeichen umfassen. Zum Beispiel ist [email protected] eine gültige E-Mail-Adresse, da .museum eine dieser neuen, langen TLDs ist.

    
Rick 03.02.2009 17:43
quelle
3

Ich fand, dass es viel praktischer ist, die Zeichenfolge an @ und:

zu teilen, anstatt die gesamte E-Mail-Adresse mit einem regulären Ausdruck zu vergleichen
  • Zuerst über eine DNS-Bibliothek nach vorhandenen MX- ​​oder A-Datensätzen des Domain-Teils suchen.
  • Überprüfen Sie dann den lokalen Teil (der Teil auf der linken Seite des @) gegen einen einfacheren Regex.

Der Grund für die DNS-Überprüfung ist, dass unerreichbare Email-Adressen, die RFC-konform sind, nichts wert sind. Der Grund für die zusätzliche Überprüfung des A-Datensatzes besteht darin, dass sie verwendet werden, um zu bestimmen, wo die Post zugestellt werden soll, wenn kein MX-Eintrag gefunden wird. (siehe RFC2821, 3.6)

Weitere Tipps:

  • Verwenden Sie eine robuste DNS-Resolver-Bibliothek, rollen Sie nicht Ihre eigenen. Testen Sie es gegen große Unternehmen. Diese haben manchmal eine große Anzahl von Mailservern, was zu Problemen führen kann. Ich habe eine buggy Bibliothek auf bmw.com gesehen. Sag es einfach. :)
pi. 03.02.2009 19:30
quelle
1

Vielleicht lohnt es sich, einen bewährten Regex zu verwenden. Der erste Link schlägt Regex für die häufigsten Fälle vor:

Ссылка

Aber um herauszufinden, ob die Adresse vollständig RFC822-konform ist, dann:

Ссылка

    
Kev 03.02.2009 17:41
quelle
0

das kommt von Regex Buddy (definitiv eine Notwendigkeit, Prog zu kaufen!)

%Vor%     
Keng 03.02.2009 17:41
quelle
-1

Jeffrey Friedl gibt einen Regex für die Validierung von E-Mail-Adressen in seinem Mastering Regular Expressions Buch. Es ist riesig, aber es funktioniert gut.

    
John D. Cook 03.02.2009 17:37
quelle
-1

Ein kleinerer zweistufiger Regex liefert gute Ergebnisse

/ ** Überprüfen Sie, ob die E-Mail-Adresse in einem gültigen Format vorliegt.      * Führender Charakter der Mailbox muss alphabetisch sein      * verbleibende Zeichen alphanumerisch plus -_ und Punkt
     * Domain-Basis muss mindestens 2 Zeichen sein      * Domain-Erweiterung muss mindestens 2, nicht mehr als 4 Alpha-Klasse sein      * Subdomains sind erlaubt.      * @version 050208 hat Apostroph als gültiges Zeichen hinzugefügt      * @version 04/25/07 E-Mail-Adresse und einzelne E-Mail-Adresse      * Buchstaben Domainnamen sind erlaubt.      * /     public static boolean isValidEmailAddress (String-Adresse) {         Zeichenfolge sRegExp;

%Vor%     
NullTerminator 03.02.2009 17:41
quelle

Tags und Links