- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
function checkmail($mail)
{
$mail = trim($mail);
if ((strlen($mail) == 0) OR (!preg_match('/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/is', $mail))) {
return false;
}
return true;
}
andremacareno 03.11.2010 20:49 # 0
Анонимус 03.11.2010 21:04 # +1
Oleg_quadro 03.11.2010 22:30 # 0
то есть такие адреса:
"user name" <[email protected]>, <[email protected]>, [email protected]
Если же надо только адрес, без всяких кавычек, то регулярка, гораздо проще.
/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z
0-9])$/i
Анонимус 03.11.2010 22:35 # −1
так что не канает))
Oleg_quadro 03.11.2010 23:55 # +2
а насчёт root@localhost согласен, обязательно нужно пропускать, обязательно.
Oleg_quadro 03.11.2010 23:56 # 0
bugmenot 04.11.2010 00:33 # −2
Oleg_quadro 04.11.2010 01:03 # 0
bugmenot 04.11.2010 02:33 # −1
тройной пусть останется в запасе, на случай дальнейших откровений о "правильных" адресах
Oleg_quadro 04.11.2010 11:55 # 0
модифицируй регулярку.
bugmenot 04.11.2010 12:35 # −1
Oleg_quadro 04.11.2010 12:16 # 0
http://govnokod.ru/4526#comment51196
Анонимус 04.11.2010 04:06 # 0
Oleg_quadro 04.11.2010 11:55 # 0
модифицируй регулярку.
bugmenot 04.11.2010 12:37 # −1
Oleg_quadro 04.11.2010 17:15 # −2
Oleg_quadro 04.11.2010 12:16 # 0
http://govnokod.ru/4526#comment51196
Oleg_quadro 04.11.2010 12:15 # 0
Я скачал пакет по ссылке http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
Достал оттуда метод, формирующий эту страшную регулярку для проверки мыла
Oleg_quadro 04.11.2010 12:15 # +1
my $addr_spec = "$localpart\@$lwsp*$domain";
Она содержит регулярку для проверки только самого адреса.
Я вывел её, вот она.
(?:[^()<>@,;:\\".\[\] \000-\037\177]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\037\177]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\037\177]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\037\177]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*
регулярка матчит и root@localhost
bugmenot 04.11.2010 17:56 # 0
Oleg_quadro 04.11.2010 20:44 # 0
"127.0.0.1"@[127.0.0.1]
Abigail <[email protected]>
Abigail<[email protected]>
Abigail<@a,@b,@c:[email protected]>
"This is a phrase"<[email protected]>
"Abigail "<[email protected]>
"Joe & J. Harvey" <example @Org>
Abigail <abigail @ example.com>
Abigail made this < abigail @ example . com >
Abigail(the bitch)@example.com
Abigail <abigail @ example . (bar) com >
Abigail < (one) abigail (two) @(three)example . (bar) com (quz) >
Abigail (foo) (((baz)(nested) (comment)) ! ) < (one) abigail (two) @(three)example . (bar) com (quz) >
Abigail <abigail(fo\(o)@example.com>
Abigail <abigail(fo\)o)@example.com>
(foo) [email protected]
[email protected] (foo)
"Abi\"gail" <[email protected]>
abigail@[example.com]
abigail@[exa\[ple.com]
abigail@[exa\]ple.com]
":sysmail"@ Some-Group. Some-Org
Muhammed.(I am the greatest) Ali @(the)Vegas.WBA
mailbox.sub1.sub2@this-domain
[email protected]
name:;
':;
name: ;
Alfred Neuman <Neuman@BBN-TENEXA>
Neuman@BBN-TENEXA
"George, Ted" <[email protected]>
Wilt . (the Stilt) [email protected]
Cruisers: Port@Portugal, Jones@SEA;
$@[]
*()@[]
"quoted ( brackets" ( a comment )@example.com
======================================== =====
Я хотел выделить такую регулярку, которая матчит только
такие адреса "[email protected]"
P.S.
На самом деле, надо допилить мою регулярку,
так как благодаря строке: my $word = "(?:$atom|$quoted_string)";
она матчит ещё и такие адреса: "user name" <username@domain_name>
nil 11.11.2010 01:04 # 0
Я им в далеком '99 пользовался, чтобы зароучивать почту непосредственно на внутриконторские машины, а не на общий мейлсервер.
Oleg_quadro 15.11.2010 00:54 # 0
Вот регулярка матчит только адреса типа:
[email protected]
^(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+)(?:\.(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+))*@(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+)(?:\.(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+))*$
Arigato 16.11.2010 11:15 # −1
3.14159265 04.11.2010 19:55 # +4
лучше бы у WebKillа поучились
if (mail=="e-mail*" || mail.length<7) { error_text=error_text+"Введитье корьектный e-mail \n" }
в одну строчку сделал, а вы с какими-то своими РФС-822
eth0 04.11.2010 22:18 # +1
istem 04.11.2010 22:32 # 0
Arigato 08.11.2010 20:24 # −8
eth0 09.11.2010 13:04 # +5
Нужность или ненужность фигурных скобок определяется исключительно соглашениями или принятыми стандартами оформления кода. Аналогично количеству табуляций в отступах и символе табуляций.
istem 09.11.2010 14:57 # +2
Часто можно встретить его искренние и удивлённые высказывания, чуть ли не в каждом куске кода он узнаёт perl стиль...
Бывает ведь...
eth0 09.11.2010 16:02 # 0
Arigato 09.11.2010 18:14 # −6
nil 11.11.2010 01:06 # +3
У меня из-за таких людей на каждом третьем ресурсе почту типа [email protected] зарубают. Говорят, что неправильный адрес, что б они понимали в неправильных адресах!
Yurik 12.11.2010 22:34 # −2
Arigato 16.11.2010 11:16 # +1
if (...) {return true;} else {return false;}
Зря на PHP перешли, такие программисты на Perl важнее.
Yurik 16.11.2010 19:52 # 0
Oleg_quadro 15.11.2010 00:54 # 0
Вот регулярка матчит только адреса типа:
[email protected]
^(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+)(?:\.(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+))*@(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+)(?:\.(?:[^()<>@,;:\\".\[\] \000-\037\177*&]+))*$