Валидация Email на Javascript

Задача:

Есть текстовое поле, куда пользователь должен вводить E-mail.

- Если поле проходит валидацию — оно должно иметь зеленую подсветку;

- Если нет — красную.


Первым делом добавляем input в HTML. Здесь все просто:

<input type="email" placeholder="E-mail">

Для простоты восприятия предположим, что больше на странице ничего нет, поэтому не станем добавлять лишние атрибуты.


Так как подсветка должна меняться в реальном времени добавим «слушатель» на input:

const INPUT = document.querySelector('input');
INPUT.addEventListener('input', updateInput);

Функция updateInput будет менять цвет css-свойства border на зеленый, если введенный в input текст валиден, или на красный — если нет.


const INPUT = document.querySelector('input');
function updateInput() {
if (validateEmail(INPUT.value)) INPUT.style.borderColor = 'green';
else INPUT.style.borderColor = 'red';
}

INPUT.addEventListener('input', updateInput);

Функция validateEmail будет сравнивать введенное пользователем значение с регулярным выражением. В успешном случае функция вернет true, иначе — false.

const EMAIL_REGEXP = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;
const INPUT = document.querySelector('input');
function validateEmail(value) {
return EMAIL_REGEXP.test(value);
}

function updateInput() {
if (validateEmail(INPUT.value)) INPUT.style.borderColor = 'green';
else INPUT.style.borderColor = 'red';
}
INPUT.addEventListener('input', updateInput);

Вот и все! Скрипт готов. Его работу вы можете проверить в моем Codepen.

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Смотрим в rfc по емейл адрксу, ахуеваем,  забиваем болт и оставляем только проверку наличия @ в строке.


"мой-супер.валидный@mail"

раскрыть ветку (4)
0
DELETED
Автор поста оценил этот комментарий

Да, вы правы - регулярка пропускает кириллицу.
Но такие ящики попадаются, хоть и редко.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

type="email" и так не пропустит левые адреса.

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Что если тебе нужно блокировать/разблокировать кнопку submit в зависимости от того - верно или не верно пользователь ввел email.
В таком случае type="email" будет мало.

0
Автор поста оценил этот комментарий

Ну последние RFC и не запрещают кириллические адреса. Зато вот такое валидное мыло ваша регулярка НЕ пропускает much.”more\ unusual”@example.com

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества