![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Здравствуйте. Уже появились русские домены, .рф, например. Следовательно стоит ожидать имейлов вида: русская@почта.рф. Или нет?
Я делаю проверку валидности вводимых имейл адресов на страничке обратной связи моего сайта. Мне не надо проверять существование адреса, достаточно проверить синтаксис: наличие собачки, точки и т.д. У меня есть 2 регулярных выражения и оба не понимают русских букв, считают что адрес типа "русская@почта.рф" - неправильный адрес. Ругаются на .pa, как я заметил. Вот эти выражения: $email =~ /^[a-zA-Z_\.-][a-zA-Z0-9_\.-\d]*\@[a-zA-Z\.-\d]+\.[a-zA-Z]{2,4}$/ $email =~ /^.+?\@.+?\.\w{2,4}$/ Первое выражение имеет недостаток еще, оно не понимает цифры в первой части адреса. И на сайте отсеиваются люди, чьи адреса начинаются на цифры, например, [email protected]. Существует ли выражение с проверкой русских символов в адресе. Или может быть кто-то сможет доработать существующие выражения? Спасибо! |
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 2 Всего: 14 |
ну дык.. сравнение идет с a-z, т.е. латинскими буквами, попробуйте так
|
|||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Все отлично работает. Спасибо!
|
|||
|
||||
srl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
Насколько я понимаю, адресов электронной почты с кириллицей сейчас нет и в ближайшую пару лет не предвидится (вопрос почты упоминался в недавних публикациях про запуск домена .рф). На формат адресов e-mail есть RFC 822 (кажется), но он крайне запутан, поэтому для проверки адресов можно взять готовый регексп или модуль, например: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html (ключевые слова для гугла: rfc email regex) |
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 2 Всего: 14 |
Погуглил, первое что нашел:
Все хорошо, но такая регулярка пропускает емейлы вида "[email protected]". Это я к тому, что гугль - это хорошо, но лучше разобраться что-же там в регулярке написано. Это сообщение отредактировал(а) alezzz - 17.1.2011, 10:07 |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Проверил, Mail::RFC822::Address нормально пропускает русская@почта.рф. Используйте его.
Добавлено через 11 минут и 18 секунд Что касается регулярки для проверки RFC822, то вот, из гугла ![]()
Можешь разбиратся, что же там написано ![]() |
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 2 Всего: 14 |
Та я это видел
![]() Это сообщение отредактировал(а) alezzz - 17.1.2011, 13:22 |
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 2 Всего: 14 |
Поковырял еще Mail::RFC822::Address (тот к которому прилогается регулярка на 72 строки
![]() Получилось что "-`~$%^&{#}+/*!?.=-@-/``=!?*+.-#=.-" очень даже "valid" адрес! Почитал RFC822. Я так понял что поддерживаются любые ASCII символы из диапазона кодов 33-127 (в дес.) кроме специальных (скобки, запятые. и т.д). Про другие символы не написано (и про кирилицу в частности). Вот последовательность из RFC:
Так в чем подвох? |
|||
|
||||
srl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
Ну так русских мыл сейчас нету. В принципе нету. Так что используй RFC и будет тебе счастье.
|
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 2 Всего: 14 |
slr, не вижу пока счастья в Mail::RFC822::Address. Допустим пользователь вбивает имейл адрес, модуль проверяет его и говорит "все нормально
![]() Достаточно ли только Mail::RFC822::Address для проверки имейла? Добавлено Даже не так.. Вопрос в том что считать валидностью адреса и на сколько точно нужно проводить проверку, вобщем сама тема из разряда холивара. Это сообщение отредактировал(а) alezzz - 20.1.2011, 10:13 |
|||
|
||||
srl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 16.1.2011 Репутация: нет Всего: нет |
alezzz, ну так по RFC-то и взаправду такой может быть 8)
Служебные символы в любом случае должны экранироваться, юниксовые конфиги никто из веб-морд не пишет, так что ничего страшного. Да и вообще, ну вводят у тебя пользователи в твою веб-мордочку всякую хрень - ну и пускай вводят: не получат ответа, их проблемы. 8) Сделай параноидально: чтобы на указанную почту высылался код подтверждения, только с помощью которого можно было бы отправить сообщение. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |