5474 Stimmen

Wie lässt sich eine E-Mail-Adresse am besten in JavaScript validieren?

Wie kann ich eine E-Mail-Adresse in JavaScript am besten mit einem regulären Ausdruck überprüfen?

23 Stimmen

@Alex Der Grund, warum ich diesen Kommentar hinzugefügt habe, ist, dass die vorgeschlagene Regex in der akzeptierten Antwort keine existierenden Live-E-Mail-Adressen zulässt, was ein schlechter Start für einen Kunden ist, und das wirklich große Problem ist, dass selbst WENN die Adresse akzeptiert wurde, sie immer noch nicht sagt, ob sie funktioniert. Die einzige Möglichkeit, zuverlässig zu überprüfen, ob eine angegebene E-Mail eine funktionierende, gültige E-Mail ist, besteht darin, eine E-Mail mit einem Verifizierungslink zu senden. Wenn Ihr Anwendungsfall also keine Verifizierung der E-Mail erfordert, genügt ein minimaler Test auf @, andernfalls sollten Sie eine Verifizierungs-E-Mail verwenden. Regex wird nur eine schlechte Benutzererfahrung bieten.

0 Stimmen

@David Mårtensson Ich habe ein + auf Ihre Gedanken hinzugefügt. Ich denke jedoch, dass eine Verifizierungs-E-Mail-Link-Sache auch eine schlechte Benutzererfahrung sein kann. Eine, die Sie einen Kunden verlieren kann.

7 Stimmen

@mikael1000 Sicher, aber was ist der Zweck einer Regex-Validierung, wenn man sowieso nicht weiß, ob es eine gültige E-Mail ist. Wenn Sie den Kunden nicht mit einem Validierungslink belästigen wollen, machen Sie einfach die einfachste Validierung <irgendwas> bei <irgendwas> und belassen es dabei. Damit stellen Sie sicher, dass der Kunde zumindest etwas eingegeben hat, das eine E-Mail sein könnte, alles andere ist meist Codeverschwendung, bis Sie zur eigentlichen Validierung kommen. Sie könnten möglicherweise überprüfen, ob die Domäne mit einem DNS-Lookup existiert.

13voto

Eric Schoonover Punkte 45504

Hier gibt es eine sehr gute Diskussion über die Verwendung regulärer Ausdrücke zur Überprüfung von E-Mail-Adressen; " Vergleichen von regulären Ausdrücken zur Überprüfung von E-Mail-Adressen "

Hier ist der aktuelle Top-Ausdruck, der mit JavaScript kompatibel ist, zu Referenzzwecken:

/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i

0 Stimmen

Jetzt extrem veraltet.

12voto

Prabhat Kasera Punkte 1109

Regex für die Überprüfung von E-Mail-Adressen

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+

11voto

endyourif Punkte 2078

Wow, es gibt eine Menge von Antworten, die leicht unterschiedliche reguläre Ausdrücke enthalten. Ich habe viele ausprobiert, die alle zu unterschiedlichen Ergebnissen und einer Vielzahl von Problemen geführt haben.

Für UI-Validierung, ich bin gut mit der grundlegenden Überprüfung der Suche nach einem @-Zeichen . Es ist wichtig zu beachten, dass ich die serverseitige Validierung immer mit einer Standard-"Validierungs-E-Mail" durchführe, die einen eindeutigen Link enthält, mit dem der Benutzer seine E-Mail-Adresse bestätigen kann.

if (email.indexOf('@') > 0)

Ich habe absichtlich die 0 gewählt, auch wenn sie auf Null basiert, da sie auch sicherstellt, dass ein einzelnes Zeichen vor dem @ steht.

11voto

Félix Saparelli Punkte 8081

Das war's dann anscheinend:

/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i

Entnommen aus http://fightingforalostcause.net/misc/2006/compare-email-regex.php am 1. Oktober '10.

Aber das ist natürlich eine Vernachlässigung der Internationalisierung.

10voto

Negin Punkte 2172

Ich war auf der Suche nach einer Regex in JS, die alle E-Mail Adresse Testfälle besteht:

  • email@example.com Gültige E-Mail

  • firstname.lastname@example.com E-Mail enthält Punkt im Adressfeld

  • email@subdomain.example.com E-Mail enthält Punkt mit Subdomain

  • firstname+lastname@example.com Das Pluszeichen gilt als gültiges Zeichen

  • email@192.0.2.123 Domäne ist gültige IP-Adresse

  • email@[192.0.2.123] Eine eckige Klammer um die IP-Adresse wird als gültig angesehen

  • “email”@example.com Anführungszeichen um die E-Mail werden als gültig angesehen

  • 1234567890@example.com Ziffern in der Adresse sind gültig

  • email@domain-one.example Bindestrich im Domänennamen ist gültig

  • _______@example.com Unterstrich im Adressfeld ist gültig

  • email@example.name .name ist ein gültiger Name der Domäne oberster Stufe

  • email@example.co.jp Der Punkt im Namen der Domäne oberster Stufe gilt ebenfalls als gültig (mit co.jp als Beispiel hier)

  • firstname-lastname@example.com Bindestrich im Adressfeld ist gültig

Jetzt geht's los:

http://regexr.com/3f07j

OR regex:

Regex = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@[*[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+]*/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X