Mówi się, że „W przypadku HTML5 nie potrzebujemy już js ani kodu po stronie serwera, aby sprawdzić, czy dane wejściowe użytkownika to prawidłowy adres e-mail lub adres URL”
Jak mogę zweryfikować e-mail po wejściu użytkownika? oraz bez JS, jak wyświetlić wiadomość, jeśli użytkownik poda nieprawidłową formę swojego adresu e-mail.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
Odpowiedzi:
W HTML5 możesz to zrobić:
Gdy użytkownik naciśnie przycisk Prześlij, automatycznie wyświetla komunikat o błędzie, taki jak:
źródło
required
atrybutu.com
w wiadomości e-mail. Sprawdza tylko znak @. Dawny. Mogę wejśćexample@gmail
i zapisać formularz. chociaż nie jest to prawidłowy adres e-mail. Czy istnieje obejście umożliwiające prawidłowe sprawdzenie[email protected]
?example@gmail
może nie być prawidłowym adresem e-mail, ale jest to prawidłowy format adresu e-mail.input type=email
Stronie www.w3.org notatek miejscu, że adres e-mail jest dowolny ciąg, który pasuje do następującego wyrażenia regularnego:Użyj
required
atrybutu ipattern
atrybutu, aby wymagać, aby wartość pasowała do wzorca wyrażenia regularnego.źródło
[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*
type="email"
i sprawdzenievalid
właściwości boolowskiej w DOMNode - nie ma potrzeby powtarzania podstawowego wyrażenia regularnegoUżywanie
[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
do[email protected]
/[email protected]
źródło
postmaster@ai
jest to na przykład prawidłowy adres e-mail, a to wyrażenie regularne również go zablokuje. (Źródło: serverfault.com/q/154991/104798 )wydaje się być prawdą, gdy pole jest puste lub prawidłowe. Ma to również kilka innych interesujących flag:
Przetestowano w Chrome.
źródło
Oto przykład, którego używam dla wszystkich danych wejściowych e-mail w formularzu. Ten przykład to ASP.NET, ale ma zastosowanie do:
HTML5 nadal sprawdza poprawność przy użyciu wzorca, gdy nie jest to wymagane. Nie znalazłem jeszcze takiego, który byłby fałszywie pozytywny.
To renderuje się jako następujący HTML:
źródło
Wiem, że nie jesteś zainteresowany rozwiązaniem Javascript, ale są pewne rzeczy, takie jak dostosowany komunikat walidacyjny, który z mojego doświadczenia można wykonać tylko za pomocą JS.
Ponadto, używając JS, możesz dynamicznie dodawać walidację do wszystkich pól wejściowych typu e-mail w Twojej witrynie, zamiast modyfikować każde pole wejściowe.
źródło
Trochę za późno na imprezę, ale to wyrażenie regularne pomogło mi sprawdzić poprawność danych wejściowych typu e-mail po stronie klienta. Chociaż zawsze powinniśmy również przeprowadzać weryfikację po stronie serwera.
Można znaleźć więcej regex wszystkich rodzajów tutaj .
źródło
TL; DR: Jedyną w 100% poprawną metodą jest sprawdzenie @ -sign gdzieś we wprowadzonym adresie e-mail, a następnie wysłanie wiadomości weryfikacyjnej na podany adres e-mail. Jeśli mogą postępować zgodnie z instrukcjami weryfikacji zawartymi w wiadomości e-mail , wprowadzony adres e-mail jest poprawny.
Długa odpowiedź:
David Gilbertson pisał o tym lata temu:
Innymi słowy, należy zauważyć, że każdy rodzaj walidacji opartej na ciągach znaków może tylko sprawdzić, czy składnia jest nieprawidłowa. Nie może sprawdzić, czy użytkownik rzeczywiście widzi e-mail (np. Ponieważ użytkownik utracił już dane uwierzytelniające, wpisał adres kogoś innego lub wpisał służbowy adres e-mail zamiast osobistego adresu e-mail dla danego przypadku użycia). Jak często pytanie, którego naprawdę szukasz, brzmi: „Czy ten e-mail jest poprawny pod względem składniowym ” zamiast „Czy mogę komunikować się z użytkownikiem przy użyciu podanego adresu e-mail ”? Jeśli zweryfikujesz ciąg bardziej niż „zawiera
@
”, próbujesz odpowiedzieć na poprzednie pytanie! Osobiście zawsze interesuje mnie tylko to drugie pytanie.Ponadto niektóre adresy e-mail, które mogą być niepoprawne pod względem składniowym lub politycznym, działają. Na przykład
postmaster@ai
działa technicznie, mimo że domeny TLD nie powinny mieć rekordów MX . Zobacz także dyskusję na temat walidacji wiadomości e-mail na liście mailingowej WHATWG (gdzie HTML5 jest zaprojektowany w pierwszej kolejności).źródło
Używając HTML 5, po prostu wprowadź wejściowy e-mail, taki jak:
Gdy użytkownik najedzie kursorem na pole wprowadzania, pojawi się podpowiedź z instrukcją, aby wprowadzić prawidłowy adres e-mail. Jednak formularze Bootstrap mają znacznie lepszą wiadomość Tooltip, która mówi użytkownikowi, aby wprowadzić adres e-mail i pojawia się, gdy wprowadzona wartość nie pasuje do prawidłowego adresu e-mail.
źródło
Możesz również podążać za tym wzorem
Ref: W W3Schools
źródło
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="please enter valid email [[email protected]].">
możesz również dodać tytuł, aby wyświetlić komunikat o ważności.Według MDN ten RegExp jest w porządku do weryfikacji wiadomości e-mail, ponieważ wiadomości e-mail spełniające specyfikacje powinny do niego pasować.
źródło
Prawidłowe sprawdzenie poprawności wiadomości e-mail po prostu przy użyciu atrybutu HTML5 „wzorzec” jest bardzo trudne. Jeśli nie użyjesz „wzorca”, ktoś @ zostanie przetworzony. który NIE jest prawidłowym adresem e-mail.
Użycie
pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
będzie wymagało[email protected]
podania formatu, jednak jeśli nadawca ma format taki jak[email protected]
(lub podobny), nie zostanie zweryfikowany w celu naprawienia tego, możesz umieścićpattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
to, aby sprawdzić poprawność ".com.au lub .net.au lub podobnie.Jednak użycie tego nie pozwoli komuś@email.com na weryfikację. Tak więc, jeśli chodzi o zwykłe używanie HTML5 do weryfikacji adresów e-mail, nadal nie jest to całkowicie z nami. Aby to ukończyć, użyłbyś czegoś takiego:
lub:
Jednak nie wiem, jak zweryfikować obie lub wszystkie wersje adresów e-mail za pomocą atrybutu wzorca HTML5.
źródło
postmaster@ai
jest to na przykład prawidłowy adres e-mail, a to wyrażenie regularne również go zablokuje. (Źródło: serverfault.com/q/154991/104798 )