регулярное выражение javascript- ошибка - PullRequest
1 голос
/ 15 марта 2011

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

<script type="text/javascript">
$(document).ready(function() {

    var regex = new RegExp(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i );

    $('#submit').click(function () {    
        var name = $('input[name=name]');
        var email = $('input[name=email]');
        var website = $('input[name=website]');
        var comment = $('textarea[name=comment]'); 
        if ((!regex.test(email))) {
            email.addClass('hightlight');
            return false;
        } else 
            email.removeClass('hightlight');            
    }
}
}

ссылка: http://emprego.herobo.com/

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Вы вызываете тестовый метод RegExp для объекта jQuery вместо строки.Измените условие с:

if ((!regex.test(email))) { ... }

на:

if ((!regex.test(email.val()))) { ... }

, и оно должно работать.

1 голос
/ 15 марта 2011

Для какого адреса электронной почты они не работают? Это регулярное выражение работает:

var regex = new RegExp(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i );

var emails = [
    'a.valid.email@gmail.com',
    'asdf@asdf.com',
    'another@valid.email.address.com'
];

var str = '';
for (var i=0; i<emails.length; i++) {
    str += emails[i] + ': ' + regex.test(emails[i]) + "\n";
}
alert(str);

Это создает предупреждение с "true" для каждого электронного письма.

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