Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить адрес электронной почты

Короткий ответ

Простой шаблон проверяет главное: что-то, затем @, затем домен с точкой, и никаких пробелов:

const isEmail = (value) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value.trim());
 
console.log(isEmail('anna@example.com'));
console.log(isEmail('anna@example'));
console.log(isEmail('anna example@mail.com'));

Результат:

true
false
false

В форме

Поле с type="email" браузер проверяет сам. checkValidity() возвращает результат в JavaScript:

<input id="email" type="email" required placeholder="you@example.com">
<button id="check">Check</button>
<p id="out"></p>
<script>
  document.getElementById('check').addEventListener('click', () => {
    const input = document.getElementById('email');
    document.getElementById('out').textContent = input.checkValidity() ? 'OK' : input.validationMessage;
  });
</script>

Нормализация

Перед проверкой и сохранением уберите пробелы по краям и приведите адрес к нижнему регистру:

const email = '  Anna.Smith@Example.COM '.trim().toLowerCase();
 
console.log(email);

Результат:

anna.smith@example.com

Частая ошибка

Не пытайтесь написать идеальное регулярное выражение: правильные адреса слишком разнообразны, а строгий шаблон отсекает настоящих пользователей. Единственная надёжная проверка — письмо с подтверждением. И проверяйте ещё раз на сервере: проверку в браузере легко обойти.

const tooStrict = (value) => /^[a-z]+@[a-z]+\.[a-z]{2,3}$/.test(value);
 
console.log(tooStrict('anna.smith@example.com'));
console.log(tooStrict('anna@example.travel'));

Результат:

false
false

Функции из этого ответа

  • RegExp.prototype.test — Проверяет, есть ли в строке совпадение с шаблоном.
  • String.prototype.trim — Удаляет пробельные символы с начала и конца строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.