Проверка данных формы с помощью JavaScript

Привет всем! Я пытаюсь сделать простую валидацию формы на JavaScript, но что-то не получается. Вот что я хочу проверить:

  1. Email: должен содержать ‘@’ и ‘.’
  2. Телефон: должен состоять только из цифр, +, -, (), и одного пробела

Вот мой код:

function проверкаФормы() {
  let почта = document.forms['регистрация']['Почта'].value;
  if (!почта || !/[@.]/.test(почта)) {
    alert('Неверный формат почты');
    return false;
  }
  
  let телефон = document.forms['регистрация']['Телефон'].value;
  if (!телефон || !/^[0-9+()-\s]+$/.test(телефон)) {
    alert('Неверный формат телефона');
    return false;
  }
  
  return true;
}

Как сделать эту проверку правильно? Не нужно слишком сложных проверок, так как на сервере будет дополнительная валидация. Спасибо за помощь!

Слушай, а ты не думал использовать HTML5 встроенную валидацию? Тип поля input можно задать как email и tel, браузер сам проверит формат. Плюс атрибуты required и pattern помогут. Меньше кода, больше функционала из коробки. Конечно, JavaScript все равно нужен для более сложных проверок, но для базовых случаев HTML5 - отличный вариант. Что думаешь?

Для валидации емейла лучше использовать более строгое регулярное выражение, например: /[1]+@[^\s@]+.[^\s@]+$/. Оно проверит наличие символов до @, после него, и домен.

Для телефона можно упростить: /[2]+$/. Это позволит использовать цифры и спецсимволы, но запретит буквы.

Еще совет - используй trim() для удаления пробелов по краям перед проверкой. И лучше выводить ошибки под полями, а не в alert - так удобнее для пользователя.


  1. ^\s@ ↩︎

  2. \d+-()\s ↩︎