Wenn Benutzer auf meiner Website ein Konto erstellen, möchte ich eine Serverüberprüfung durchführen, damit E-Mails nicht jede Eingabe akzeptieren .
Ich werde eine Bestätigung senden, um eine Handshake-Validierung durchzuführen .
Ich suche etwas Einfaches, nicht das Beste , aber nicht zu Einfaches, das nichts bestätigt. Ich weiß nicht, wo die Einschränkung sein muss, da reguläre Ausdrücke nicht die richtige Validierung durchführen, da dies mit regulären Ausdrücken nicht möglich ist.
Ich versuche, die mit regulären Ausdrücken verbundene Sintax und visuelle Komplexität zu begrenzen, da in diesem Fall alle korrekt sind.
Mit welchem regulären Ausdruck kann ich das tun?
c#
regex
email-validation
eKek0
quelle
quelle
Antworten:
quelle
Es ist möglich, einen regulären Ausdruck zu schreiben, der nur E-Mail-Adressen akzeptiert, die den Standards entsprechen. Es gibt jedoch einige E-Mail-Adressen, die nicht genau den Standards entsprechen, aber dennoch funktionieren.
Hier sind einige einfache reguläre Ausdrücke für die grundlegende Validierung:
Enthält ein @ -Zeichen:
Enthält @ und einen Punkt irgendwo danach:
Hat mindestens ein Zeichen vor dem @, vor dem Punkt und danach:
Hat nur ein @, mindestens ein Zeichen vor dem @, vor dem Punkt und danach:
Benutzer AmoebaMan17 schlägt diese Änderung vor, um Leerzeichen zu entfernen:
Und für die Annahme nur einer Periode:
quelle
[email protected]
?^ [a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 -] +. [a-zA-Z0-9 -.] + $
quelle
Ich denke, diese kleine Änderung des Ausdrucks von AmoebaMan17 sollte verhindern, dass die Adresse mit einem Punkt beginnt / endet, und auch mehrere Punkte nebeneinander stoppen. Versuchen Sie, es nicht wieder komplex zu machen, während Sie ein häufiges Problem beseitigen.
Es scheint zu funktionieren (aber ich bin kein RegEx-Pert). Behebt mein Problem mit dem Kopieren und Einfügen von E-Mail-Adressen durch Benutzer am Ende von Sätzen, die mit einem Punkt enden.
dh: Hier ist meine neue E-Mail-Adresse [email protected].
quelle
Treffen Sie Ihre Wahl.
Hier ist derjenige, der RFC 2822 Abschnitt 3.4.1 entspricht ...
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Nur für den Fall, dass Sie neugierig sind. :) :)
quelle