Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: регулярка для проверки e-mail
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Решил написать себе для сайта регулярку для проверки введеного e-mail-а. Но не просто так буквы, цифры, собака, еще буквы... А более точную...
Итак, что мы знаем об e-mail адресах:
1) все они такого типа <имя>@<домен>
2) имя может быть от 1 до 20 (по поводу 20 не уверен, но себе ограничил так) символов
3) имя может содержать: буквы, цифры, знаки _ - и точку.
4) имя может начинаться и заканчиваться только на букву или цифру
5) имя не может содержать подряд несколько символов (точек точно, а вот про - и _ опять таки не уверен)
6) домен по принципу имени
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Champion
Отправлено: 10 Апреля, 2011 - 21:19:34
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Саныч, регулярка нормальная, но по RFC адрес email может содержать много интересных символов(об этом сказано и в ссылке, приведенной EuGenом). Хотя я вроде не встречал почтовых серверов, позволяющих [#!&$...]
Если верить новостям, то
Цитата:
Почтовые ящики в зоне «.рф» заработают через три года
Саныч
Отправлено: 10 Апреля, 2011 - 22:08:16
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Champion пишет:
по RFC адрес email может содержать много интересных символов
знаю, но чисто анализируя свои знания об email-ах, понимаю что кроме _ - и точки больше никакие символы не встречал, к тому же некоторые ящики вообще кроме точки ничего не разрешают, тот же gmail.com к примеру
EuGen, спасибо! Кое-что вспомнил... А вот http://ai[dot]/ для меня новость, как-то не встречал еще такого...
Исходя из всего этого, немного подредактировал
еще вопросы:
1) длина имени, максимальное значение? Сейчас в регулярке 21 получается. Ящики используют кто 30, кто 32, некоторые вобще по-моему до 64. Так сколько же максимум?
2) длина части в домене (часть, всмысле кусочек отделеный точкой). Исходя из статьи которую кинул EuGen поставил на 63 символа, но на сколько я знаю максимум 255.
3) может лучше использовать filter_var() ?
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Alek пишет:
Оцените пожалуйста, чего я упустил?
особо не вглядывался в вашу регулярку, спешу, но какая-то она стремная сразу бросилось в глаза вот это @? По вашему в email-е может отсутствовать собака?)
Вобщем приду, вечером хорошо рассмотрю...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
valenok
Отправлено: 12 Апреля, 2011 - 16:22:00
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
filter_validate_email использует вот такую регулярку:
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
valenok пишет:
filter_validate_email использует вот такую регулярку:
Ух ё. Основательно.
Саныч
Отправлено: 13 Апреля, 2011 - 21:04:00
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
все еще интересуют след. вопросы
Цитата:
еще вопросы:
1) длина имени, максимальное значение? Сейчас в регулярке 21 получается. Ящики используют кто 30, кто 32, некоторые вобще по-моему до 64. Так сколько же максимум?
2) длина части в домене (часть, всмысле кусочек отделеный точкой). Исходя из статьи которую кинул EuGen поставил на 63 символа, но на сколько я знаю максимум 255.
3) может лучше использовать filter_var() ?
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Champion
Отправлено: 13 Апреля, 2011 - 21:09:02
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Саныч пишет:
может лучше использовать filter_var()
Лучше. По идее он отфильтрует в соответствии со стандартом.
Саныч
Отправлено: 13 Апреля, 2011 - 21:13:43
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Champion, ок, понял... Но в конкретном примере я проверяю email в браузере, т.е. через js. Идет проверка на валидность и соответственно вывод опред. сообщения пользователю...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Champion
Отправлено: 13 Апреля, 2011 - 21:26:55
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
А со стороны браузера filter_var нету, да. http://en[dot]wikipedia[dot]org/wiki/Email_address http://iqa[dot]com[dot]ua/articles/objec[dot][dot][dot]resa_chitaem_rfc
The local-part of an email address may be up to 64 characters long and the domain name may have a maximum of 253 characters. However, the maximum length of a forward or reverse path length of 256 characters restricts the entire email address to be no more than 254 characters.[1] Some mail protocols, such as X.400, may require larger objects, however. The SMTP specification recommends that software implementations impose no limits for the lengths of such objects.
Далее список разрешенных символов.
Вот, собственно, всё что касается и длины, и разр. символов. Регулярок тут достаточно привели - выбирай любую)
Саныч
Отправлено: 13 Апреля, 2011 - 21:56:14
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Champion, спасибо! В принципе ничего нового, и так знал, просто был не до конца уверен.
Уже выбрал, остаюсь при своей, единственное что подкорректирую ее под 64 и 253, ну, а на стороне сервера скорей всего через filter_var сделаю...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.