Подтвердить что ты не робот

Супер простая проверка электронной почты с помощью javascript

Я делаю очень простую проверку электронной почты script, которая в основном просто проверяет следующие

  • что письмо не пустое
  • письмо содержит символ @с не менее чем 1 символом перед ним
  • что существует домен, то есть @с не менее чем двумя буквами после него
  • что он заканчивается полным стопом с не менее чем двумя буквами после него

Я знаю, что есть еще много проверок, но я смотрю на эти правила регулярных выражений, и мой ум перестает работать. Я полагаю, что если бы я начал с чего-то малого такого, я мог бы окунуться в мозг более сложными правилами.

В настоящее время с использованием некоторого jquery я делаю следующее:

 var booking_email = $('input[name=booking_email]').val();

 if(booking_email == '' || booking_email.indexOf('@') == -1 || booking_email.indexOf('.') == -1) {

   // perform my alert

 }

Этого достаточно, чтобы остановить 90% фальшивых писем до сих пор... Я бы просто хотел сделать это немного более эффективным, потому что в настоящее время мое правило разрешает такие письма, как "@domain.com" или "user @domain". потому что он только проверяет, что есть полный стоп и символ @.

Спасибо за любые советы.

4b9b3361

Ответ 1

То, что предложили другие, должно работать нормально, но если вы хотите, чтобы все было просто, попробуйте следующее:

var booking_email = $('input[name=booking_email]').val();

if( /(.+)@(.+){2,}\.(.+){2,}/.test(booking_email) ){
  // valid email
} else {
  // invalid email
}

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

Ответ 2

Наименее возможная жадная проверка, которую вы делаете с этим RegExp /^[email protected]+\..+$/
Он будет обеспечивать только то, что адрес соответствует самым основным требованиям, которые вы упомянули: символ перед @и что-то до и после точки в доменной части. Проверка более чем вероятно будет неправильной (у вас всегда есть шанс занести в черный список действительный адрес электронной почты).

используйте его следующим образом:

var is_valid_email = function(email) { return /^[email protected]+\..+$/.test(email); }

Ответ 3

RegexLib.com(http://regexlib.com/Search.aspx?k=email) имеет сотни процедур проверки электронной почты по какой-либо причине. Я бы рекомендовал вам прочитать эту статью: http://www.unwrongest.com/blog/email-validation-regular-expressions/, и если вы решите продолжить использование регулярного выражения для проверки, моя любимая утилита для тестирования - это свободное регулярное выражение Дизайнер можно бесплатно скачать здесь: http://www.radsoftware.com.au/regexdesigner/... проверить все письма в большом списке (доступно для бесплатной загрузки или покупки... или использовать ваша собственная текущая БД), чтобы ваше регулярное выражение было приемлемым в ваших ограничениях.

Я бы порекомендовал базовый тест (многие в верхней части regexlib.com... Я не беру кредит за работу, которую я использую регулярно), а затем подпрограмма проверки подлинности электронной почты, которая требует взаимодействия с пользователем. Это единственный реальный способ "проверить" адрес электронной почты.

Ответ 4

Try:

function valid_email(email) {
   return email.match(/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~][email protected]((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i);
}

Это лучшее доступное регулярное выражение для проверки электронной почты, в соответствии с этой статьей. Я рекомендую использовать это, если ваша цель не является чем-то действительно простым, но не полностью совместимым.

Ответ 5

Проверить электронную почту очень сложно, но вы можете иметь несколько ограничительную, но простую проверку электронной почты. Я сам использую этот, который делает довольно приличную работу, чтобы убедиться, что это 95% адрес электронной почты.

var simpleValidEmail = function( email ) {
    return email.length < 256 && /^[^@][email protected][^@]{2,}\.[^@]{2,}$/.test(email);
};

Я бы порекомендовал это для "простой" проверки.

Чтобы понять, почему это трудно решить, см.: Как проверить адрес электронной почты с помощью регулярного выражения?

Обновление: исправлено регулярное выражение

Ответ 6

Вы также можете использовать это регулярное выражение с открытым исходным кодом, называемое validator-isEmail.

function isEmail(email) {
  const re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(email);
}; 

Вы также можете попробовать этот пакет NPM, чтобы сделать трюк.

Ответ 7

Если вы хотите проверить только для бизнес-почты, попробуйте это:

<script type="text/javascript">
$(document).ready(function(e){
     $('#sendReq').click(function(){ 
     var email = $('#emailAddress').val();
     var reg = /^([\w-\.][email protected](?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!yahoo.co.in)(?!aol.com)(?!abc.com)(?!xyz.com)(?!pqr.com)(?!rediffmail.com)(?!live.com)(?!outlook.com)(?!me.com)(?!msn.com)(?!ymail.com)([\w-]+\.)+[\w-]{2,4})?$/;
      if (reg.test(email)){
     return 0;
     }
     else{
     alert('Please Enter Business Email Address');
     return false;
     }
     });
    });
</script>

Ответ 8

Вы можете попробовать следующее:

var booking_email = $('input[name=booking_email]').val();
if(booking_email.match(/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
  // valid email
} else {
  // not valid
}