Почтовая Проверка … защита использования +, и как смущенный необходимо было бы записать это?

Я в полной мере пользуюсь подстановочной функцией Gmail (username+wildcard@gmail.com). К сожалению, кажется, что большинство разработчиков не понимает это + допустимо в адресе электронной почты. Это делает попытку иногда отказываться от подписки реальная тяжелая работа.

Возьмите TicketMaster, например... сразу Вы замечаете, что они даже не потрудились выходить из адреса электронной почты, таким образом, значения по умолчанию текстового поля "пользователю wilcard@gmail.com". Не проблема, мы можем просто добавить + вручную. Однажды Отправьте, нажат, Вы заметите, что проверка останавливает Вас прямо в Ваших дорожках. Что теперь?

Большинство пользователей должно было бы далее связаться с TicketMaster и попытаться объяснить ситуацию. Я открыл FireBug для исследования. Именно тогда я заметил это избиение 74 почтовых функции проверки строки с таким дублированием, это смешно. Моя любимая проверка находится на строке 20, сообщая пользователю что его электронная почта cannot have more than one @.Нереально. Моя вторая любимая часть является этими ДВУМЯ используемыми регулярными выражениями!

Вообразите..., что кому-то заплатили деньги за это... и взглядами его, им заплатило количество строки.

//Validates the email
function validateOptoutEmail(object) {
    var emailStr = object.value;
    if(emailStr == '' || emailStr == null) {
        alert('Email can not be empty. Please provide email');
        object.value = '';
        object.focus();
        return false;
    } else if(Trim(emailStr).length == 0) {
        alert('Email can not be empty. Please provide email');
        object.value = '';
        object.focus();
        return false;
    } else {
        var atcount=0;
        for(var i=0;i1) {
            alert('Invalid email. Email cannot have more than one @');
            object.value = '';
            object.focus();
            return false;
        }

        if(emailStr.indexOf('.') == -1) {
            alert('Invalid email. Email must have one dot');
            object.value = '';
            object.focus();
            return false;
        }
        if(emailStr.indexOf('..')!= -1) {
            alert('Invalid email. Email cannot have consecutive dots');
            object.value = '';
            object.focus();
            return false;
        }
        var dotpos=0;
        for(var i=dotpos;i< emailStr.length;i++) {
            var ichar=emailStr.charAt(i);
            if(ichar=='.') dotpos=i;
        }
        for(var i=dotpos+1;i< emailStr.length;i++) {
            var ichar=emailStr.charAt(i);
            if((!isNaN(ichar)) || (ichar == '_')) {
                alert('Invalid email. Email cannot have numbers or _ after dot');
                object.value = '';
                object.focus();
                return false;
            }
        }
        var pattern2=/^([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
        var pattern1=/^[0-9a-zA-Z\-\_.]+@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
        if (pattern1.test(emailStr)) {
            if(pattern2.test(emailStr)) {
                return true;
            } else {
                alert('Invalid email');
                object.value = '';
                object.focus();
            }
            return true;
        } else {
            alert('Invalid email');
            object.value = '';
            object.focus();
            return false;
        }
        alert('Invalid email');
        object.value = '';
        object.focus();
        return false;
    }
}

Я в конечном счете просто поместил точку останова в FireBug и изменился, значение адреса электронной почты передало в функцию проверки. Оттуда все хорошо работало...

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

1
задан Langdon 4 May 2010 в 18:43
поделиться