2012-07-24 6 views
6

Mögliche Duplizieren:
Validate email address in Javascript?Was ist der schlechteste Regex, um definitiv ungültige E-Mail-Adressen abzulehnen?

Ich weiß, dass es keine Möglichkeit gibt, eine E-Mail-Adresse unter Verwendung von nur regex zu validieren, aber ich denke, ich sollte einige offensichtlich ungültig die in der Lage sein, zu verwerfen in um freundlichen Benutzern zu helfen, die versehentlich etwas anderes eingegeben haben, z. B. ihren Namen oder ihr Passwort in das Feld für die E-Mail-Adresse. Ich möchte also keine gültigen E-Mail-Adressen ablehnen, sondern so viele ungültige E-Mail-Formate ablehnen, wie nur mit einer Regex möglich ist. Aber ich denke, jedes Javascript/Jquery/... wäre auch in Ordnung. Hier

ist das, was ich bisher:

^[email protected]+\..+$ 

Ja, es gibt keine regex für echte Validierung ist, aber es sollte eine gewisse für die Ablehnung sein. Nein, dies wird niemanden daran hindern, gefälschte Adressen einzugeben. Ja, Sie müssen noch eine Bestätigungs-E-Mail senden, um die Echtheit zu bestätigen.

Der obige Regex wird von Javascript verwendet.

-

In .NET würde ich stattdessen lassen .NET das E-Mail-Format

try 
    { 
     var mailAddress = new MailAddress(possibleMailAddress); 
    } 

und wenn ok, überprüfen Sie die DNS-Einträge für den Domain-Teil mit validieren, um zu sehen, ob es könnte eine sein E-Mail-Server. Nur wenn die DNS-Datensätze eindeutig angeben, dass kein E-Mail-Server vorhanden sein kann oder wenn keine solche Domäne vorhanden ist, wird die E-Mail-Adresse abgelehnt. Dann cachen Sie einige der Ergebnisse, um zukünftige Suchvorgänge zu beschleunigen.

Dennoch muss ich Bestätigung E-Mails für die Validierung senden ...

+3

Ich glaube, du hast ein sinnvolle Regex hier. Obwohl es Adressen ohne Punkte in ihnen gibt, sind sie wahrscheinlich ziemlich selten. –

+0

Ich stimme zu, dass dies eine ziemlich vernünftige Regex für eine öffentlich zugängliche Website ist. Möglicherweise möchten Sie auch [diese Antwort] (http://stackoverflow.com/a/46181/960195) auf die verwandte, aber nicht ganz dieselbe Frage "E-Mail-Adresse in JavaScript validieren?" –

+0

Viele Diskussionen über unterschiedliche Grade der Überprüfung mit einem Regex hier: http://StackOverflow.com/Questions/46155/validate-email-address-in-Javascript. Scheint wie eine doppelte Frage an mich. – jfriend00

Antwort

4

Die offizielle Norm RFC 2822 beschreibt die Syntax, die gültige E-Mail-Adressen mit diesem regulären Ausdruck:

(?:[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])+)\])