Помогите с проверкой email. Регулярные выражения

1 234
N
На сайте с 06.05.2007
Offline
419
#21
DyaDya:
Она пропускает все, кроме someemail@mail/r.ru

а может это на самом деле правильный адрес ? по крайней мере моя почтовая программа попыталась послать а почтовый сервер попытался это письмо доставить.

я правда затрудняюсь вспомнить что он значит, но учитывая регулярку в четвертом посте, мы очень мало о знаем о rfc822.

Тут важно вовремя остановиться. Регулярка от vbulletin не слишком большая. Ну и в использовании filter_var ничего плохого нет, кроме того что ваш скрипт не будет работать на php < 5.2

Кнопка вызова админа ()
[Удален]
#22
DyaDya:

Терь задумалси, а нужно ли считать $someemail@mail.ru неправильным мылом? Без спецификации не обойтись.

Я Вам итак скажу, что по существующей спецификации подходят для local-area (или как оно там называется в спецификации - читал давно, поэтому точно не скажу) чуть ли не

#$_.121sd$#ASD

то есть может быть email #$_.121sd$#ASD@gmail.com

кроме того, домен может указываться в виде IP адреса. В сущности - кто из регистраторов email-ов позволяет в качестве логина использовать #$_.121sd$#ASD ? Вы часто пишете вместо gmail.com что то вроде 82.14.10.176 ? На спецификацию уже все давно положили, а вот разработчики PHP - нет, поэтому функция filter_var и пропускает всякие разные интересные и не очень email'ы

DyaDya
На сайте с 11.04.2007
Offline
147
#23
netwind:
а может это на самом деле правильный адрес ?

нужно спросить у ТС, раз ему не нравятся мыла типа: $someemail@mail.ru, ~someemail@mail.ru пусть даст ссылку на официальные докУменты подтверждающие запрет таких имён. А до тех пор, будем считать их существующими и использоваться более простые регулярки ;)

Вот этот someemail@mail/r.ru - да, похоже, действительно запрещённое названия для мыла. Хотя булка его пропускает и подсвечивает.

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
[Удален]
#24
netwind:
а может это на самом деле правильный адрес ?
я правда затрудняюсь вспомнить что он значит, но учитывая регулярку в четвертом посте, мы очень мало о знаем о rfc822.

RFC822 не описывает формат адреса насколько я помню.

N
На сайте с 06.05.2007
Offline
419
#25
So1:
RFC822 не описывает формат адреса насколько я помню.

ну кто все эти люди на форуме о поисковых системах? можно же поискать.

именно фомат адреса этот документ и описывает

RFC822 - STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES

DyaDya:
Вот этот someemail@mail/r.ru - да, похоже, действительно запрещённое названия для мыла. Хотя булка его пропускает и подсвечивает.

а почему thunderbird его пропустил?

[Удален]
#26
netwind:
ну кто все эти люди на форуме о поисковых системах? можно же поискать.
именно фомат адреса этот документ и описывает
RFC822 - STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES

Переведите теперь "STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES" и поймете, что не описывает.

N
На сайте с 06.05.2007
Offline
419
#27

а не надо переводить название, надо открыть и почитать. адрес как часть сообщения там и описывается.


6. ADDRESS SPECIFICATION .................................. 27

6.1. Syntax ........................................... 27
6.2. Semantics ........................................ 27
6.3. Reserved Address ................................. 33

DyaDya
На сайте с 11.04.2007
Offline
147
#28
netwind:
а почему thunderbird его пропустил?

не знаю. У всех свои правила игры. А может быть некоторые не парятся по этому поводу или парятся но по разному.

Буду отталкиваться от поведения функции filter_var($email, FILTER_VALIDATE_EMAIL), а она ошибочным из всех мыл топика признаёт только someemail@mail/r.ru

Пока, для себя оставляю вот такой рабочий вариант:


function is_email($email){
if (function_exists("filter_var")){
$s=filter_var($email, FILTER_VALIDATE_EMAIL);
return !empty($s);
}
# $p = '/^[A-Za-z0-9][a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
$p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
$p.= '|info|arpa|aero|coop|name|museum)$/ix';
return preg_match($p, $email);
}
N
На сайте с 06.05.2007
Offline
419
#29

DyaDya, а где домен mobi ? если делаете сайт на века, надо учитывать появление в будущем различных доменов первого уровня

DyaDya
На сайте с 11.04.2007
Offline
147
#30

mobi добавил. Надеюсь, на пару лет хватит)

Хотя опять же, filter_var по поводу длины доменов первого уровня вообще не заморачивается!

Пропускает без проблем и такой: vash-test@mail.mobilniki

))

Пожалуй, это правильно. Ибо зачем усложнять жизню.

Проверка на валидность не подразумевает проверку существования (работоспособности) мыла или домена!

p.s. А ведь и в национальных кодировках появляются домены, пока это не учитывается в валидности.

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий