SharePoint Alfresco PHP MySQL
О сайте Контакты
пятница, 13 июня 2014 г.

Регулярное выражение для проверки Email

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

В первую очередь, определимся с целью. Проверка email нужна исключительно для того, чтобы сопоставить пользователя с его личным email-адресом (а не липовым адресом какого-то другого случайного человека). Эта праведная цель зачастую дополняется ненужными препятствиями типа проверки формальной корректности email на этапе регистрации.

Некоторые разработчики по неопытности пытаются проверить email по формальным требованиям стандартов RFC, что зачастую приводит к тому, что вполне правильные и рабочие адреса отсекаются от регистрации. Тогда эти разработчики начинают расширять свои регулярные выражения, доводя их до нечитаемого монстрообразного вида. А зачем? Ведь можно просто отправить письмо-запрос на введенный email, в котором будет обратная ссылка с кодом регистрации. Если оно не придет, значит и email неправильный.

Ресурсы почтового сервера не настолько бешеных денег стоят, чтобы их так экономить. Будет ошибка при отправке — ну и пусть. Допускаю, что при вводе email можно давать подсказку относительно правильности ввода, но никак не жестко ограничивать ввод по регулярке. Пример простейшего регулярного выражения для email:

"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"

Его вполне достаточно для того, чтобы подсказать пользователю, вдруг он что-то ввел неправильно. Если пользователь уверен в правильности, он может проигнорировать подсказку и все равно зарегистрируется, прибавив вам базу посетителей. Вводя жесткое ограничение вы его лишитесь.

Таким образом, проектируя формы ввода, всегда имейте ввиду, что они должны помогать вводу данных, а не препятствовать ему. Главный тут пользователь, а не программист, который вдруг решил таким мелким способом по-умничать или показать свою власть.

Sergey Lysenko, пятница, 13 июня 2014 г.

Комментарии: