Валидация 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
Автор поста оценил этот комментарий

+ EMAIL_REGEXP стрёмный... нафига все эти выебоны. есть @ - значит почта верная... откуда ты знаешь какие завтра введут правила в именах доменов и поддоменов. те-же {2,} завтра может станет {1,} доменное имя vsempohu.y например )

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

Маловероятно, но в таком случае во всем коде нужно будет только регулярку подправить.

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

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

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

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

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

Что за адский regex. Проще же можно было.

Советую вам vue.js. И стили менять при помощи css а не js.

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

Я попытался описать простейший способ валидации без фреймворков, библиотек и прочего.
Стили навесил через js только для того чтобы сократить пример.
А так да, вы правы - лучше это делать через css.

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

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


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

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

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

показать ответы

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества