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

Функция is_email()

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

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

/** * Функция 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); }

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

// заполним массив различными вариантами ввода электронной почты 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, т.е. электронная почта введена корректно.

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

Категории

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

Читайте также

Комментарии