Flash Ripper RSS Readers

Функция проверки email-адреса на валидность

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

function  checkEmail(strEmail:String):Boolean{
return strEmail.indexOf("@")>0 && strEmail.indexOf(".")>2 && strEmail.length-strEmail.indexOf(".")>2;
}
А вдруг кому пригодится ;)

Писал Rost, 4 Февраль 2005 19:39

Найдены баги:

Все же мала проку от такой проверки.
Можно ввести абсолютную чушь, типа: $$@$%6...$$#
Доставить почту на подобный адрес, имхо, нереально. :)

Вообще, проблему проверки на валидность почты неплохо расписал Том Кристиансен, сказав при этом следующие: "Задача в принципе неразрешима..."
Вкратце это выглядит следующим образом: есть стандарт RFC 822. По этому стандарту адрес типа bla@bla.bla.bla.bla.bla теоретически правилен, практическу почту доставить туда вряд ли удастся. И наоборот, адрес типа postmaster не соответствует стандарту, но почта наверняка будет доставлена...

MSA - 5 Февраль 2005 3:28

руки с корнем рвать за такое
адрес на манер xx@xx.xx. будет признан за валидный

то же касается xx@.xx.xx и xx@........

нормальная проверка выглядит вот так:

^[\\w\\d][\\w\\d\\-.]*@[\\w\\d]{2}[\\w\\d\\-]*.[\\w\\d]{2}(\\.?[\\w\\d\\-]+)*$

serge - 7 Февраль 2005 14:53

serge, во-первых во Flash нету встроенных регулярных выражений. Даже если RegExp написать свой или использовать уже чей-либо... То во-вторых, твоя проверка тоже не правильная. Адреса почты не заканчиваются банальными bla@bla.bla и в вариациях с суб-доменами..

Они могут быть еще такими:

vasia&marusia_pupkini@mail.bla
=?koi8-r?B?98HT0Q==?=

или вот такими:

=?koi8-r?B?98HT0SDw1dDLyc4=?= (=?koi8-r?B?IvLPx8EgQU5EIOvP0NnUwSI=?= 
)

и еще очень много какими :)
Все же советую почитать RFC-822 если эта тема так сильно волнует.
И самое главное, ответить на философский вопрос – Где гарантия, что этот адрес существует?

Тем не менее, подобные проверки пишутся и используются, правда в основном для извлечения e-mail’ов из текстов или для их highlighting... Ну и в почтовых клиентских и серверных программах разумеется.

MSA - 7 Февраль 2005 16:06

Теги снеслись..., вот:
=?koi8-r?B?98HT0Q==?= <vasia-pupkin@mail.bla>

=?koi8-r?B?98HT0SDw1dDLyc4=?= <vasia_pupkini@mail.bla>(=?koi8-r?B?IvLPx8EgQU5EIOvP0NnUwSI=?=
)

MSA - 7 Февраль 2005 16:11

Елы опять... Рост поправь сам, plz.

MSA - 7 Февраль 2005 16:13

MSA, я поправил, проверь.
serge, спасибо за регулярное выражение, будет что погрызть :)

Рост - 7 Февраль 2005 19:29

сама тема обсуждения предполагает, что проверкой мы будем заниматься в нашем флешовом приложении - попросту, в 99% случаев это будет валидация данных некой формы

адресов типа postmaster или ?koi8-r?B?IvLPx8EgQU5EIOvP0NnUwSI=? там не будет =)

так что можно с уверенностью говорить, несмотря на то, что написано в RFC, 99.9999% адресов описываются как x@x.x + .x в периоде

можно, конечно, обойтись без регекспов - TextField.restrict = "A-Z a-z 0-9 & - _ ^ " и несложных упражнений со String.split("@") и String.split(".") достаточно. с регекспами, однако, нагляднее.

> Где гарантия, что этот адрес существует
нету ее
но это вообще проблема неразрешимая и теоретически и практически
остается хотя бы явный мусор фильтровать

serge - 8 Февраль 2005 0:05

Народ.. о чем спор.. Если человек не захочет ввести правильно свой емайл, то введет billgates@microsoft.com и думаю это проканает на все сто. А если захочет, то введет... Поэтому делайте выводы...

Влад - 10 Февраль 2005 19:31

Спасибо за комменты! Конечно, моя функция не ловит злоумышленника за руку. Но она очень простая и фиксит самые частые ошибки ;-)

Рост - 5 Март 2005 21:29

Кстати, MSA, теперь в комментах Потрошителя можно использовать тэги pre,code,a href,a target,br,b,i,u,stroke! Так что твои комменты сами по себе пофиксились ;) (все это благодаря "MT::Sanitize")

Какие еще тэги стоит добавить в число разрешенных?

Рост - 5 Март 2005 21:33

Особая благодарность -- разработчику плагина Sanitize для MT, вот ссылка на его сайт: Sanitize Plugin. Я так понял, этот плагин теперь стал частью самой системы публикации.

Рост - 5 Март 2005 21:38

-

- 9 Август 2006 22:04



Это запись из категории 'Coding'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-30, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-25, Articles-26, AS3-52, Books-7, Business-3, Cairngorm-2, CI-1, Classes-10, Coding-30, Community-113, Components-19, Contests-28, Cool-Job-5, Debug-18, Design-26, Development-84, EMO-1, Events-13, Extensions-2, FAQ-8, FDS-1, Flash and html-5, Flash Player-35, Flash Updates-8, Flash-scene-1, flash10-4, FlashLite-2, Flex-30, Flex 2-80, Flickr-1, FMS-1, FPUG-46, frameworks-1, Games-11, Good Job!-35, HaXe-14, Health-2, Humor-10, Ideas-13, JavaScript-1, Job-26, JSFL-8, Links-2, Linux-1, Maps-1, Math-8, Money-11, MXML-1, Open Source-15, Optimization-2, Patterns-2, Personalities-27, Politics-1, Preloading-3, Productivity-9, PureMVC-10, Pv3d-1, Rafpug-4, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-8, Silverlight-5, Sound-3, Strategy-120, Tamarin-1, Tools-113, Training-2, Trash-8, URAFPUG-13, Urgent-1, Usability-6, Video-6, VoIP-5, Wallop-1, Wishlist-2, Архив всех записей (большой)

За последние месяцы:

Июл 2008: Международная встреча разработчиков URAFPUG завершена, URAFPUG - трансляция студии Flex-фреймворка Mate, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн

Май 2008: Если 3D, то по-взрослому: официальный запрос в Adobe по поводу контроля над мип-маппингом. Нужна ваша поддержка!, В этом году «Russian Flash Awards» пройдет в «космическом стиле», весь Май

Апр 2008: Программирование под флэш платформу. Cтатья (местами спорная), Advanced Flash Components бесплатно раздает все свои AS2-компоненты, весь Апр

Мар 2008: Зарплаты программистов в 2007 году, FlashPhone как технология года? Технология года? В Рунете?, весь Мар

Фев 2008: ЙА ФПУГ — регистрация на первую встречу UAFPUG продолжается, Закулисы Flex и секрет успеха опенсорс-проекта, весь Фев





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)