Ich schreibe ein sehr einfaches Modell, um die Validierung von HTML5-Formularen zu demonstrieren. Ich habe jedoch festgestellt, dass bei der E-Mail-Überprüfung weder nach einem Punkt in der Adresse noch nach Zeichen gesucht wird, die diesem Punkt folgen.
Mit anderen Worten, "john @ doe" gilt als gültig, wenn es sich eindeutig nicht um eine gültige E-Mail-Adresse handelt. "doe" ist keine Domain.
So codiere ich mein E-Mail-Feld:
<input type="email" required />
Ist das nicht genug
Überprüfen Sie diese Geige, um zu sehen, was ich meine.
Hinweis: Ich weiß, wie dies stattdessen über ein RegEx-Muster erreicht wird. Ich frage mich nur, wie jemand davonkommen könnte, stattdessen den E-Mail-Typ zu verwenden.
html
email-validation
WEFX
quelle
quelle
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.
Ja,doe
kann definitiv eine Domain sein (denkenlocalhost
), und diese Adresse ist gemäß der Spezifikation technisch gültig.localhost
Adressen.Antworten:
Weil a @ b eine gültige E-Mail-Adresse ist (z. B. localhost eine gültige Domain). Siehe http://en.wikipedia.org/wiki/Email_address#Examples
Beachten Sie außerdem, dass Sie die Eingabevalidierung immer auf dem Server durchführen sollten. Die clientseitige Validierung sollte nur dazu dienen, dem Benutzer Feedback zu geben, und nicht als verlässlich angesehen werden, da sie leicht umgangen werden kann.
quelle
au@ua
Sie können theoretisch eine Adresse ohne "." im.
Da technisch Dinge wie:
Sind alle gültigen E-Mails.
Die Standard-HTML5-Validierung ermöglicht also alle gültigen E-Mails, einschließlich der ungewöhnlichen.
Für einige leicht zu lesende Erklärungen (anstatt die Standards durchzulesen ): http://en.wikipedia.org/wiki/Email_address#Examples
quelle
uz
, die ab Oktober 2018 direkt auf eine IP verweist. Wenn Sie eine machennslookup uz
, zeigt sie auf91.212.89.8
, sodass es möglich sein sollte, auch E-Mails in dieser Domain zu haben.Versuchen Sie, dies der Eingabe hinzuzufügen
Geige
quelle
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
Der RFC 822 , Kapitel 6, enthält die Angabe einer Adresse in erweiterter Backus-Naur-Form (BNF):
Die Verwendung dieser Spezifikation
a@b
ist eine gültige Adresse.AKTUALISIEREN
Um den Kommentar von Trejkaz zu beantworten, füge ich die folgenden Definitionen hinzu. Wir sehen, dass SPACE erlaubt ist, aber nur in Anführungszeichen.
quelle
Auf dieser MDN-Seite werden die Regex-Browser angezeigt, mit denen die E-Mail überprüft werden soll:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation
Sie können diesen regulären Ausdruck leicht ändern, um mindestens einen Punkt im Domainnamen zu benötigen: Ändern Sie den Stern
*
am Ende des regulären Ausdrucks in ein Plus+
. Verwenden Sie dann diesen regulären Ausdruck alspattern
Attribut:quelle
Sie können das Muster des E-Mail-Felds anpassen:
quelle
Hier erfahren Sie, wie Sie dies mit HTML5 mithilfe eines Regex-Musters tun können. Sie können auch eine benutzerdefinierte Nachricht zum Anzeigen einfügen.
quelle
Dieses Muster funktioniert immer bei mir.
Text muss in Kleinbuchstaben geschrieben werden,
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
aber ich denke, er deckt mehr oder weniger die meisten E-Mails ab.quelle