Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Проверка электронной почты (JavaScript)

Функция is_email()

Иногда необходимо проверять вводимые пользователем данные в форме средствами JavaScript. И часто заполняется электронная почта пользователя, которую нужно проверить «на корректность».

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

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * Функция is_email проверяет корректно ли введена электронная почта email
 * true - корректно
 * false - некорректно
 *
 */

function is_email(email)
{
    // список доменов верхнего уровня, в которых больше двух символов
    var reg = /^[a-z0-9][a-z0-9\-._]*[a-z0-9]@[a-z0-9][a-z\-._]*[a-z0-9]\.(biz|com|edu|gov|info|int|mil|name|net|org|aero|asia|cat|coop|jobs|mobi|museum|pro|tel|travel|arpa|eco|xxx|[a-z]{2})$/i;
    
    return reg.test(email);
}

Тестирование

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// заполним массив различными вариантами ввода электронной почты
var emails = [
    'test@example.com',
    'test@example.ru',
    'test@example.org.ru',
    '.test@example.com',
    'test.name@example.com',
    'test.my-name@subdomain.example.com',
    'test.text@example.comm',
    'test@example.com',
    'test@e-x.com',
    'test@e.ex.com',
    'text@-ex.ru'
];

// прогоним массив и проверим каждый адрес на корректность
for (var i=0; i<emails.length; i++)
{
    document.writeln(emails[i]+': '+(is_email(emails[i]) ? 'true' : '<b>false</b>')+'<br>');
}

Результат

test@example.com: true
test@example.ru: true
test@example.org.ru: true
.test@example.com: false
test.name@example.com: true
test.my-name@subdomain.example.com: true
test.text@example.comm: false
test@example.com: true
test@e-x.com: true
test@e.ex.com: true
text@-ex.ru: false

Внимание!

Советую прочитать
Объявляя переменную, регулярное выражение, таким образом: var reg = /.../i — все работает отлично, а если объявить так: var reg = new RegExp('...', 'i') — выполнение происходит не совсем корректно. Например проверка адреса test.text@example.comm (домена .comm не существует) выдает результат true, т.е. электронная почта введена корректно.

Так что будьте внимательны, мелочь, а может отнять много времени, возможно это особенность браузера или баг.

Опубликовано: 29 января 2011  ·  Автор: Артём Фёдоров  ·  3305 просмотров

Категория

ГлавнаяПрограммированиеJavaScriptПроверка электронной почты (JavaScript)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

JavaScript, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания