Программирование > Регулярные выражения
регэксп е-мэйла
Forza:
Обнаружив, что в случае отправки е-мэйла на адрес, в котором юзер указал какую-нибудь лабуду, получается интернал сервер еррор, я решил проверять введённые юзером е-мэйлы.
Конечно, чтобы скрипт не валился достаточно простой проверки типа /.+@.+/, но заодно хотелось сделать максимально возможную проверку е-мэйла на похожесть на настоящий (вдруг юзер просто ошибся). Из одной книги (какой, уже не помню) давно скопировал следующий регэксп:
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/, т.е.
а) до собаки имеем набор alphanumeric символов, в котором разделителями могут быть одиночные точка и/или тире
б) после собаки сначала - такой же набор с такими же разделителями, потом - набор из доменов высшего уровня (как минимум 1!), длиной от 2 до 3 символов.
Почитав тут про введение всяких разных новых доменов высшего уровня я решил, что тут как минимум есть одно неправильное условие - ограничение длины домена верхнего уровня, т.е. получим регэксп:
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/
Что ещё посоветуете исправить? Хочется сделать регэксп с минимальными ограничениями, чтобы он удовлетворял всевозможным е-мэйлам, и скрипт бы не давал юзеру его обойти! Т.е. если формат е-мэйлов очень плавающий, тогда вернёмся к /.+@.+/
Phoinix:
Forza
http://forums.webscript.ru/showthread.php?s=&threadid=13029
Forza:
Мда, ты почти убедил меня в проверке /.+@.+/, только чтобы sendmail не загибался от отсутствия собаки. ;)
Phoinix:
Forza
Да нет, ты знаешь, я уже больше года пользуюсь етим регом, и ничего... никто не ругался... ;)
Даже не сильно задавлся желанием его проверять, та и в общем это не нужно...
Проще IMHO отлавливать ошибку sendmail
Green Kakadu:
--- Цитировать ---Forza:
Что ещё посоветуете исправить?
--- Конец цитаты ---
:) наверное, если все-таки интернациональные домены типа "вася.ру" будут более распространены чем сейчас :) то нужно будет учитывать нац.кодировку
Навигация
Перейти к полной версии