Es heißt "Mit HTML5 benötigen wir kein js oder einen serverseitigen Code mehr, um zu überprüfen, ob die Benutzereingabe eine gültige E-Mail- oder URL-Adresse ist."
Wie kann ich E-Mails nach Eingabe eines Benutzers validieren? und ohne JS, wie eine Nachricht angezeigt wird, wenn der Benutzer eine falsche Form seiner E-Mail-Adresse eingibt.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
Antworten:
In HTML5 können Sie Folgendes tun:
Wenn der Benutzer auf "Senden" drückt, wird automatisch eine Fehlermeldung angezeigt:
quelle
required
Attribut verwenden.com
in einer E-Mail. Es wird nur das @ -Zeichen überprüft. Ex. Ich kannexample@gmail
das Formular eingeben und speichern. Es ist jedoch keine gültige E-Mail-Adresse. Gibt es eine Problemumgehung, die ordnungsgemäß überprüft werden muss[email protected]
?example@gmail
Möglicherweise handelt es sich nicht um eine gültige E-Mail, es handelt sich jedoch um ein gültiges E-Mail-Adressformat.Auf der
input type=email
Seite der Website www.w3.org wird darauf hingewiesen , dass eine E-Mail-Adresse eine beliebige Zeichenfolge ist, die dem folgenden regulären Ausdruck entspricht:Verwenden Sie das
required
Attribut und einpattern
Attribut, um zu fordern, dass der Wert mit dem Regex-Muster übereinstimmt.quelle
[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*
type="email"
dievalid
boolesche Eigenschaft im DOMNode zu verwenden und zu überprüfen - keine Notwendigkeit, den zugrunde liegenden regulären Ausdruck zu wiederholenVerwenden
[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
für[email protected]
/[email protected]
quelle
postmaster@ai
um eine gültige E-Mail-Adresse handelt und dass dieser reguläre Ausdruck dies ebenfalls verbietet. (Quelle: serverfault.com/q/154991/104798 )scheint wahr zu sein, wenn das Feld entweder leer oder gültig ist. Dies hat auch einige andere interessante Flaggen:
In Chrome getestet.
quelle
Hier ist das Beispiel, das ich für alle meine Formular-E-Mail-Eingaben verwende. Dieses Beispiel ist ASP.NET, gilt jedoch für alle:
HTML5 überprüft das Muster weiterhin, wenn es nicht benötigt wird. Ich habe noch keinen gefunden, der falsch positiv war.
Dies wird wie folgt gerendert:
quelle
Ich weiß, dass Sie nicht nach der Javascript-Lösung suchen, aber es gibt einige Dinge wie die angepasste Validierungsnachricht, die meiner Erfahrung nach nur mit JS durchgeführt werden kann.
Mithilfe von JS können Sie die Validierung auch dynamisch zu allen Eingabefeldern vom Typ E-Mail auf Ihrer Site hinzufügen, anstatt jedes einzelne Eingabefeld ändern zu müssen.
quelle
Ein bisschen spät für die Party, aber dieser reguläre Ausdruck hat mir geholfen, die Eingabe des E-Mail-Typs auf der Client-Seite zu überprüfen. Wir sollten die Überprüfung jedoch auch immer auf der Serverseite durchführen.
Weitere Regex aller Art finden Sie hier .
quelle
TL; DR: Die einzige 100% korrekte Methode besteht darin, irgendwo in der eingegebenen E-Mail-Adresse nach @ -sign zu suchen und dann eine Validierungsnachricht an die angegebene E-Mail-Adresse zu senden. Wenn sie den Validierungsanweisungen in der E-Mail-Nachricht folgen können , ist die eingegebene E-Mail-Adresse korrekt.
Lange Antwort:
David Gilbertson schrieb vor ungefähr diesem Jahr :
Mit anderen Worten, es ist wichtig zu beachten, dass jede Art von stringbasierter Validierung nur prüfen kann, ob die Syntax ungültig ist. Es kann nicht überprüft werden, ob der Benutzer die E-Mail tatsächlich sehen kann (z. B. weil der Benutzer bereits Anmeldeinformationen, die eingegebene Adresse einer anderen Person oder die eingegebene geschäftliche E-Mail anstelle der persönlichen E-Mail-Adresse für einen bestimmten Anwendungsfall verloren hat). Wie oft lautet die Frage, nach der Sie wirklich suchen, "Ist diese E-Mail syntaktisch gültig " anstelle von " Kann ich mit dem Benutzer über die angegebene E-Mail-Adresse kommunizieren "? Wenn Sie die Zeichenfolge mehr als "enthält sie
@
" validieren , versuchen Sie, die vorherige Frage zu beantworten! Persönlich interessiert mich immer nur die letztere Frage.Darüber hinaus funktionieren einige E-Mail-Adressen, die möglicherweise syntaktisch oder politisch ungültig sind. Funktioniert beispielsweise
postmaster@ai
technisch, obwohl TLDs keine MX-Einträge haben sollten . Siehe auch Diskussion über E - Mail - Validierung auf der WHATWG Mailingliste (wo HTML5 in erster Linie konzipiert ist).quelle
Erstellen Sie mit HTML 5 einfach die eingegebene E-Mail wie folgt:
Wenn der Benutzer mit der Maus über das Eingabefeld fährt, wird ein Tooltip angezeigt, in dem er aufgefordert wird, eine gültige E-Mail-Adresse einzugeben. Bootstrap-Formulare enthalten jedoch eine viel bessere Tooltip-Nachricht, mit der der Benutzer aufgefordert wird, eine E-Mail-Adresse einzugeben. Diese wird angezeigt, sobald der eingegebene Wert nicht mit einer gültigen E-Mail übereinstimmt.
quelle
Sie können diesem Muster auch folgen
Ref: In W3Schools
quelle
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="please enter valid email [[email protected]].">
Sie können auch einen Titel hinzufügen, um eine Gültigkeitsmeldung anzuzeigen.Laut MDN ist dieses RegExp in Ordnung, um E-Mails zu validieren, da E-Mails, die den Spezifikationen entsprechen, damit übereinstimmen sollten.
quelle
Es ist sehr schwierig, E-Mails einfach mit dem HTML5-Attribut "pattern" korrekt zu validieren. Wenn Sie kein "Muster" verwenden, wird jemand @ verarbeitet. Das ist keine gültige E-Mail.
Für die Verwendung
pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
muss das Format[email protected]
jedoch sein. Wenn der Absender ein Format wie[email protected]
(oder ein ähnliches) hat, das nicht validiert wird, um dies zu beheben, können Siepattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
festlegen, dass ".com.au oder .net.au oder ähnliches" validiert wird.Wenn Sie dies jedoch verwenden, kann [email protected] nicht validieren. Soweit die einfache Verwendung von HTML5 zur Validierung von E-Mail-Adressen noch nicht vollständig bei uns ist. Um dies zu vervollständigen, würden Sie ungefähr Folgendes verwenden:
oder:
Ich weiß jedoch nicht, wie ich beide oder alle Versionen von E-Mail-Adressen mithilfe des HTML5-Musterattributs überprüfen kann.
quelle
postmaster@ai
um eine gültige E-Mail-Adresse handelt und dass dieser reguläre Ausdruck dies ebenfalls verbietet. (Quelle: serverfault.com/q/154991/104798 )