Говорят: «С HTML5 нам больше не нужен js или код на стороне сервера, чтобы проверить, является ли введенный пользователем действительный адрес электронной почты или URL».
Как я могу подтвердить электронную почту после входа пользователя? и без JS, как отображать сообщение, если пользователь ввел неправильную форму своего адреса электронной почты.
<input type="email" pattern="[^ @]*@[^ @]*" placeholder="Enter your email">
<input type="submit" value="Submit">
Ответы:
В HTML5 это можно сделать так:
И когда пользователь нажимает кнопку «Отправить», автоматически отображается сообщение об ошибке, например:
источник
required
атрибут.com
электронной почте. Проверяется только знак @. Ex. Я могу войтиexample@gmail
и сохранить форму. хотя это не действительный адрес электронной почты. Есть ли обходной путь для правильной проверкиexample@gmail.com
?example@gmail
может быть недействительным адресом электронной почты, но это действительный формат адреса электронной почты.На
input type=email
странице сайта www.w3.org указано, что адрес электронной почты - это любая строка, которая соответствует следующему регулярному выражению:Используйте
required
атрибут иpattern
атрибут, чтобы требовать, чтобы значение соответствовало шаблону регулярного выражения.источник
[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*
type="email"
и проверятьvalid
логическое свойство на DOMNode - нет необходимости повторять базовое регулярное выражениеИспользование
[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
forsomemail@email.com
/somemail@email.com.vn
источник
postmaster@ai
это действующий адрес электронной почты, и это регулярное выражение также запретит его. (Источник: serverfault.com/q/154991/104798 )кажется верным, когда поле либо пустое, либо действительное. Здесь есть и другие интересные флаги:
Проверено в Chrome.
источник
Вот пример, который я использую для всех вводимых мной форм электронной почты. Это пример ASP.NET, но применим к любому:
HTML5 по-прежнему проверяет использование шаблона, когда он не требуется. Еще не нашел ни одного ложного срабатывания.
Это отображается как следующий HTML:
источник
Я знаю, что вам не нужно решение Javascript, однако есть некоторые вещи, такие как настраиваемое сообщение проверки, которое, по моему опыту, может быть выполнено только с использованием JS.
Кроме того, с помощью JS вы можете динамически добавлять проверку ко всем полям ввода типа электронной почты на вашем сайте вместо того, чтобы изменять каждое поле ввода.
источник
Немного поздно для вечеринки, но это регулярное выражение помогло мне проверить ввод типа электронной почты на стороне клиента. Тем не менее, мы всегда должны проводить проверку и на стороне сервера.
Вы можете найти более регулярное выражение всех видов здесь .
источник
TL; DR: единственный 100% правильный метод - это проверить наличие @ -sign где-нибудь во введенном адресе электронной почты, а затем отправить сообщение проверки на указанный адрес электронной почты. Если они могут следовать инструкциям по проверке в сообщении электронной почты , введенный адрес электронной почты правильный.
Длинный ответ:
Дэвид Гилбертсон писал об этом много лет назад:
Другими словами, важно отметить, что любой вид проверки на основе строк может проверять только неверность синтаксиса. Он не может проверить, действительно ли пользователь видит электронное письмо (например, потому что пользователь уже потерял учетные данные, напечатал чужой адрес или напечатал рабочий адрес электронной почты вместо личного адреса электронной почты для данного варианта использования). Как часто вам действительно задают вопрос: « Синтаксически ли это электронное письмо допустимо? » Вместо « Могу ли я общаться с пользователем, используя данный адрес электронной почты »? Если вы проверяете строку больше, чем «содержит ли она
@
», вы пытаетесь ответить на первый вопрос! Лично меня всегда интересовал только последний вопрос.Кроме того, работают некоторые адреса электронной почты, которые могут быть синтаксически или политически недействительными. Например,
postmaster@ai
технически работает, даже если в TLD не должно быть записей MX . Также см. Обсуждение проверки электронной почты в списке рассылки WHATWG (где HTML5 разработан в первую очередь).источник
Используя HTML 5, просто сделайте входное электронное письмо следующим образом:
Когда пользователь наводит курсор на поле ввода, появляется всплывающая подсказка, предлагающая ввести действительный адрес электронной почты. Однако формы Bootstrap имеют гораздо лучшую всплывающую подсказку, предлагающую пользователю ввести адрес электронной почты, и она появляется в тот момент, когда введенное значение не соответствует действительному адресу электронной почты.
источник
Вы также можете следовать этому шаблону
Ссылка: В W3Schools
источник
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="please enter valid email [test@test.com].">
вы также можете добавить заголовок, чтобы показать сообщение о действительности.Согласно MDN , этот RegExp подходит для проверки электронных писем, поскольку электронные письма, соответствующие спецификациям, должны ему соответствовать.
источник
Очень сложно правильно проверить электронную почту, просто используя атрибут HTML5 "шаблон". Если вы не используете "шаблон", кто-то @ будет обработан. который НЕ является действительным адресом электронной почты.
Использование
pattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
потребует, чтобы формат был,someone@email.com
однако, если отправитель имеет формат, подобныйsomeone@email.net.au
(или подобный), не будет проверен, чтобы исправить это, вы можете поставитьpattern="[a-zA-Z]{3,}@[a-zA-Z]{3,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}[.]{1}[a-zA-Z]{2,}"
указать, что это будет проверять ".com.au или .net.au или подобное.Однако, используя это, он не разрешит проверку кого-то@email.com. Так что простое использование HTML5 для проверки адресов электронной почты еще не полностью с нами. Чтобы завершить это, вы должны использовать что-то вроде этого:
или:
Однако я не знаю, как проверить обе или все версии адресов электронной почты с помощью атрибута шаблона HTML5.
источник
postmaster@ai
это действующий адрес электронной почты, и это регулярное выражение также запретит его. (Источник: serverfault.com/q/154991/104798 )