Проверка электронной почты с использованием jQuery - PullRequest
324 голосов
/ 24 марта 2010

Я новичок в jQuery, и мне было интересно, как использовать его для проверки адресов электронной почты.

Ответы [ 35 ]

2 голосов
/ 20 июня 2013
checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. ui@jquery.com" );

Ссылка: JQUERY UI ВЕБ-САЙТ

2 голосов
/ 24 марта 2015

вы должны увидеть это: jquery.validate.js , добавьте его в свой проект

используя это так:

<input id='email' name='email' class='required email'/>
2 голосов
/ 16 марта 2018

Вы можете создать свою собственную функцию

function emailValidate(email){
    var check = "" + email;
    if((check.search('@')>=0)&&(check.search(/\./)>=0))
        if(check.search('@')<check.split('@')[1].search(/\./)+check.search('@')) return true;
        else return false;
    else return false;
}

alert(emailValidate('your.email@yahoo.com'));
1 голос
/ 28 мая 2018

На этот вопрос ответить сложнее, чем кажется на первый взгляд. Если вы хотите правильно обрабатывать электронные письма.

В мире было множество людей, которые искали «регулярное выражение, чтобы управлять ими всеми», но правда в том, что существуют тона поставщиков электронной почты.

В чем проблема? Ну, «a_z%@gmail.com не может существовать, но может существовать такой же адрес через другого провайдера» a__z@provider.com.

Почему? По данным РФЦ: https://en.wikipedia.org/wiki/Email_address#RFC_specification.

Я возьму выдержку, чтобы облегчить лекцию:

The local-part of the email address may use any of these ASCII characters:

- uppercase and lowercase Latin letters A to Z and a to z;
- digits 0 to 9;
- special characters !#$%&'*+-/=?^_`{|}~;
- dot ., provided that it is not the first or last character unless quoted, and provided also that it does not appear consecutively unless quoted (e.g. John..Doe@example.com is not allowed but "John..Doe"@example.com is allowed);[6]
Note that some mail servers wildcard local parts, typically the characters following a plus and less often the characters following a minus, so fred+bah@domain and fred+foo@domain might end up in the same inbox as fred+@domain or even as fred@domain. This can be useful for tagging emails for sorting, see below, and for spam control. Braces { and } are also used in that fashion, although less often.
- space and "(),:;<>@[\] characters are allowed with restrictions (they are only allowed inside a quoted string, as described in the paragraph below, and in addition, a backslash or double-quote must be preceded by a backslash);
- comments are allowed with parentheses at either end of the local-part; e.g. john.smith(comment)@example.com and (comment)john.smith@example.com are both equivalent to john.smith@example.com.

Итак, я могу владеть таким адресом электронной почты:

A__z/J0hn.sm{it!}h_comment@example.com.co

Если вы попробуете этот адрес, держу пари, он потерпит неудачу во всех или в большей части регулярных выражений, размещенных по всей сети. Но помните, что этот адрес следует правилам RFC, поэтому он действителен.

Вообразите мое разочарование в связи с тем, что я нигде не смог зарегистрироваться, проверенный этими регулярными выражениями !!

Единственный, кто действительно может подтвердить адрес электронной почты, является поставщиком адреса электронной почты.

Как с этим бороться, так?

Не имеет значения, добавляет ли пользователь недействительный адрес электронной почты почти во всех случаях. Вы можете положиться на HTML 5 input type = "email", который работает около в RFC, малый шанс на провал. HTML5 input type = "email" info: https://www.w3.org/TR/2012/WD-html-markup-20121011/input.email.html

Например, это действительный адрес электронной почты RFC:

"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com

Но проверка html5 скажет вам, что текст перед @ не должен содержать, например, символы "или"), что на самом деле неверно.

В любом случае, вы должны сделать это, приняв адрес электронной почты и отправив сообщение на этот адрес электронной почты с кодом / ссылкой, которую пользователь должен посетить, чтобы подтвердить действительность.

Хорошей практикой при этом является ввод "введите свой адрес электронной почты еще раз", чтобы избежать ошибок при вводе пользователем. Если вам этого недостаточно, добавьте модальное окно предварительной отправки с заголовком «Это ваш текущий адрес электронной почты?», А затем сообщение, введенное пользователем внутри тега h2, вы знаете, чтобы четко показать, какой адрес -почту, которую они ввели, затем кнопку "да, отправить".

1 голос
/ 27 октября 2012
if($("input#email-address").getVerimailStatus() < 0) { 

(incorrect code)

}

if($("input#email-address").getVerimailStatus() == 'error') { 

(right code)

}
1 голос
/ 14 ноября 2017

Вы можете использовать jQuery Validation , и в одной строке HTML вы можете проверить электронную почту и сообщение проверки электронной почты: type="email" required data-msg-email="Enter a valid email account!"

Вы можете использовать параметр data-msg-email , чтобы разместить персонализированное сообщение или иным образом не размещать этот параметр, и появится сообщение по умолчанию: «Пожалуйста, введите действительный адрес электронной почты».

Полный пример:

<form class="cmxform" id="commentForm" method="get" action="">
  <fieldset>
    <p>
      <label for="cemail">E-Mail (required)</label>
      <input id="cemail" type="email" name="email" required data-msg-email="Enter a valid email account!">
    </p>
    <p>
      <input class="submit" type="submit" value="Submit">
    </p>
  </fieldset>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.js"></script>
<script>
$("#commentForm").validate();
</script>
1 голос
/ 19 июля 2015

Упрощенный, который я только что сделал, делает то, что мне нужно. Ограничено только буквенно-цифровыми, точка, подчеркивание и @.

<input onKeyUp="testEmailChars(this);"><span id="a"></span>
function testEmailChars(el){
    var email = $(el).val();
    if ( /^[a-zA-Z0-9_@.-]+$/.test(email)==true ){
        $("#a").html("valid");
    } else {
        $("#a").html("not valid");
    }
}

Сделано с помощью других

1 голос
/ 04 августа 2016

Проверка электронной почты при наборе текста с обработкой состояния кнопки.

$("#email").on("input", function(){
    var email = $("#email").val();
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (!filter.test(email)) {
      $(".invalid-email:empty").append("Invalid Email Address");
      $("#submit").attr("disabled", true);
    } else {
      $("#submit").attr("disabled", false);
      $(".invalid-email").empty();
    }
  });
1 голос
/ 03 ноября 2015

Это регулярное выражение предотвращает дублирование доменных имен, таких как abc@abc.com.com.com.com, только два раза разрешает домен, как abc@abc.co.in. Это также не позволяет делать запись с номера, такого как 123abc@abc.com

 regexp: /^([a-zA-Z])+([a-zA-Z0-9_.+-])+\@(([a-zA-Z])+\.+?(com|co|in|org|net|edu|info|gov|vekomy))\.?(com|co|in|org|net|edu|info|gov)?$/, 

Все лучшее !!!!!

0 голосов
/ 17 июня 2019

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

проверка с помощью регулярного выражения

var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);

проверка с использованием реального API проверки электронной почты

Вы можете использовать API, который проверяет, является ли адрес электронной почты реальным и активным в данный момент.

var emailAddress = "foo@bar.com"
response = $.get("https://isitarealemail.com/api/email/validate?email=" +
    emailAddress,
    function responseHandler(data) {
        if (data.status === 'valid') {
            // the email is valid and the mail box is active
        } else {
            // the email is incorrect or unable to be tested.
        }
    })

Подробнее см. https://isitarealemail.com или сообщение в блоге

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...