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

Я считаю, что регулярное выражение плагина проверки jQuery недостаточно для моих требований. Он принимает любой адрес электронной почты [email protected] в качестве действительного адреса электронной почты, тогда как я хочу иметь возможность предоставлять это регулярное выражение /^([a-zA-Z0-9_.-+ ])+\@(([a-zA -Z0-9 -]) +.) + ([A-zA-Z0-9] {2,4}) + $ /, чтобы он проверял полную часть адреса .com. Меня больше беспокоит возможность предоставить свое собственное регулярное выражение, чем получение регулярного выражения с защитой от дурака (поскольку для проверки электронной почты нет регулярного выражения с защитой от дурака)

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

Есть ли способ сделать это в разделе «правила» плагина проверки jQuery?

Это мой раздел правил прямо сейчас:

rules: {
                        email: {
                            required:  {
                                    depends:function(){
                                        $(this).val($.trim($(this).val()));
                                        return true;
                                    }   
                                },
                            email: true
                        },

person neelmeg    schedule 20.09.2012    source источник


Ответы (4)


Я бы не стал этого делать, но ради ответа вам нужно добавить свою собственную проверку.

//custom validation rule
$.validator.addMethod("customemail", 
    function(value, element) {
        return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
    }, 
    "Sorry, I've enabled very strict email validation"
);

Затем в свои правила добавьте:

rules: {
                    email: {
                        required:  {
                                depends:function(){
                                    $(this).val($.trim($(this).val()));
                                    return true;
                                }   
                            },
                        customemail: true
                    },
person Tom    schedule 20.09.2012
comment
ошибка здесь, в регулярном выражении: return /^(([a-zA-Z0-9_.\-+ ])+\@((((a-zA-Z0-9-))+.)+([a-zA -Z0-9] {2,4}) + $ /. Test (значение); - person Andrey Vorobyev; 22.01.2013
comment
@Tom: регулярное выражение проверки электронной почты неверно. Это должно быть return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value); - person Prashant Tapase; 23.07.2014
comment
не могли бы вы объяснить, почему вы этого не сделали? - person wal; 04.08.2015
comment
Да, регулярное выражение вызывает ошибки. Я использую istead следующее return /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i.test(value); - person Hexodus; 13.02.2016
comment
@Tom Строгая проверка хороша для живых веб-сайтов. test @ localhost определенно является спамом на реальном веб-сайте. Называть это очень строгой проверкой электронной почты неуместно. - person Supreme Dolphin; 20.08.2018

Ваше регулярное выражение слишком строгое, jQuery прав.

"this is a valid adress !"@yes.it.is

Я предлагаю вам прочитать это: Прекратить проверку адресов электронной почты с помощью вашего сложного регулярного выражения

person Denys Séguret    schedule 20.09.2012
comment
В реальной жизни у каждого адреса электронной почты есть .tld, и только у спамеров есть символы крайнего регистра. - person Acyra; 10.03.2016
comment
@Acyra Вы можете писать код, который работает только иногда и случайно. Но многие программисты предпочитают писать код, соответствующий стандарту и работающий со всеми электронными письмами, а не только с теми, которые вы уже видели. - person Denys Séguret; 10.03.2016
comment
Это мне неизвестно. Возможна ли электронная почта типа xxx @ xxx технически? (без суффикса .xx). Плагин проверки по умолчанию позволяет это. - person Mark; 25.01.2017
comment
@Mark только в одном случае ... когда вы используете электронную почту для тестов: test @ localhost - person jtmielczarek; 30.01.2017
comment
Провайдеры электронной почты не разрешают регистрировать такие электронные письма. Во-вторых, если вы регистрируете электронные письма в своем собственном домене, а ваш адрес электронной почты отклоняется моим веб-сайтом, вы всегда можете создать новый адрес, если вам нужны услуги моего веб-сайта. В-третьих, зачем вам публично использовать такое странное электронное письмо? Мой сайт не будет первым и, конечно же, не последним, кто откажется от таких адресов электронной почты. В-четвертых, если я провожу вечеринку и говорю, что у меня белый дресс-код, можно ли прийти в черном и пожаловаться, что я слишком строг? - person Supreme Dolphin; 21.08.2018

Попробуй это!

   jQuery.validator.addMethod("customEmail", function(value, element) {
             return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i.test(value);
            }, "Please enter valid email address!");

        $(form).validate({
             rules: {
                 email:{
                     required:true,
                     customEmail:true
                 }
             }
        });
person Rajesh Karunakaran    schedule 22.11.2018

person    schedule
comment
Хотя этот код может ответить на вопрос, рассмотрите возможность предоставления некоторых объяснений, чтобы помочь OP понять решение и помочь другим читателям, у которых может быть аналогичная проблема. - person CodeMouse92; 15.02.2017