Автор Тема: регэксп е-мэйла  (Прочитано 3950 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
регэксп е-мэйла
« : 30 Октября 2004, 11:10:35 »
Обнаружив, что в случае отправки е-мэйла на адрес, в котором юзер указал какую-нибудь лабуду, получается интернал сервер еррор, я решил проверять введённые юзером е-мэйлы.
Конечно, чтобы скрипт не валился достаточно простой проверки типа /.+@.+/, но заодно хотелось сделать максимально возможную проверку е-мэйла на похожесть на настоящий (вдруг юзер просто ошибся). Из одной книги (какой, уже не помню) давно скопировал следующий регэксп:
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/, т.е.
а) до собаки имеем набор alphanumeric символов, в котором разделителями могут быть одиночные точка и/или тире
б) после собаки сначала - такой же набор с такими же разделителями, потом - набор из доменов высшего уровня (как минимум 1!), длиной от 2 до 3 символов.

Почитав тут про введение всяких разных новых доменов высшего уровня я решил, что тут как минимум есть одно неправильное условие - ограничение длины домена верхнего уровня, т.е. получим регэксп:
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$/

Что ещё посоветуете исправить? Хочется сделать регэксп с минимальными ограничениями, чтобы он удовлетворял всевозможным е-мэйлам, и скрипт бы не давал юзеру его обойти! Т.е. если формат е-мэйлов очень плавающий, тогда вернёмся к /.+@.+/

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
регэксп е-мэйла
« Ответ #1 : 30 Октября 2004, 13:33:22 »

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
регэксп е-мэйла
« Ответ #2 : 30 Октября 2004, 13:57:24 »
Мда, ты почти убедил меня в проверке /.+@.+/, только чтобы sendmail не загибался от отсутствия собаки. ;)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
регэксп е-мэйла
« Ответ #3 : 30 Октября 2004, 14:41:54 »
Forza
Да нет, ты знаешь, я уже больше года пользуюсь етим регом, и ничего... никто не ругался... ;)
Даже не сильно задавлся желанием его проверять, та и в общем это не нужно...

Проще IMHO отлавливать ошибку sendmail

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
регэксп е-мэйла
« Ответ #4 : 30 Октября 2004, 15:05:54 »
Цитировать
Forza:
Что ещё посоветуете исправить?

:) наверное, если все-таки интернациональные домены типа "вася.ру" будут более распространены чем сейчас :) то нужно будет учитывать нац.кодировку
 в исканиях.

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
регэксп е-мэйла
« Ответ #5 : 30 Октября 2004, 22:57:44 »
Цитировать
Phoinix:
Проще IMHO отлавливать ошибку sendmail


Практика показала, что для того чтобы sendmail не давал ошибку 500, ему достаточно, чтобы в "е-меле" была "собака", т.е. без всякой ругани отправляет письмо на a@a.

К тому же вовсе НЕ обязательно после указания юзером своего е-мэйла за этим будет следовать отправление ему письма.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
регэксп е-мэйла
« Ответ #6 : 31 Октября 2004, 01:05:50 »
Forza посмотри устройство Email::Valid и RFC::RFC822::Address
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28