Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

Исключение неправельных адресов E-Mail   Найти похожие ветки 

 
Прохожий ©   (2003-07-22 10:33) [0]

Как сделать фильтр "правильности" ввода электронных адресов?


 
NickBat ©   (2003-07-22 10:39) [1]

100 процентного фильтра правильности почтовых адресов нет.


 
Прохожий ©   (2003-07-22 10:44) [2]

Я имею ввиду правильность синтаксиса


 
Ihor Osov'yak ©   (2003-07-22 10:46) [3]

Если имеется ввиду синтаксический контроль - то что-то похоже на это:


const IdentifierChars = ["A".."Z","a".."z","0".."9","_"] ;

type TokenType = ( TK_PERIOD, // . found
TK_AT, // @ found
TK_STR, // concatenation of characters
TK_EOEA ); // end of email address


function NextToken( var S, Token : string ) : TokenType ;
begin
Result := TK_EOEA ;
Token := "" ;
while ( S <> "" ) and ( S[1] = " " ) do
delete( S, 1, 1 ) ;
if ( S <> "" ) then
begin
if ( S[1] in IdentifierChars ) then
begin
while ( S <> "" ) and
( S[1] in IdentifierChars ) do
begin
Token := Token + S[1] ;
delete( S, 1, 1 ) ;
end ;
Result := TK_STR ;
end
else
begin
case S[1] of
"." : Result := TK_PERIOD ;
"@" : Result := TK_AT ;
end ;
delete( S, 1, 1 ) ;
end
end
else Result := TK_EOEA ;
end ; // NextToken

function EmailValidator( EmailAddress : string ) : boolean ;
var EmailToken : string ;
Token : TokenType ;
State : integer ;
begin

result := false;

EmailAddress := trim(EmailAddress);
if EmailAddress="" then exit;
State := 0 ;
while ( State <> 100 ) do
begin
Token := NextToken( EmailAddress, EmailToken ) ;
case State of
-1 : begin
Result := false ;
State := 100 ;
end ;

0 : case Token of
TK_STR : State := 1 ;
else
State := -1 ;
end ;

1 : case Token of
TK_PERIOD : State := 0 ;
TK_AT : State := 2 ;
else
State := -1 ;
end ;

2 : case Token of
TK_STR : State := 3 ;
TK_EOEA : State := 99 ; //osi: 123@yahoo now is walid
else
State := -1 ;
end ;

3 : case Token of
TK_PERIOD : State := 4 ;
TK_EOEA : State := 99 ;
else
State := -1 ;
end ;

4 : case Token of
TK_STR : State := 5 ;
else
State := -1 ;
end ;

5 : case Token of
TK_PERIOD : State := 4 ;
TK_EOEA : State := 99 ;
else
State := -1 ;
end ;
99 : begin
Result := true ;
State := 100 ;
end ;
end ;
end ;
end ; // EmailValidator


Зы - а почти 100 проц. контроль - пошли мыло по адресу..


 
Прохожий ©   (2003-07-22 10:58) [4]

ага, попробую


 
___Nikolay ©   (2003-07-22 11:47) [5]

function IsValidEmail(const Value:string):boolean;
function CheckAllowed(const s:string):boolean;
var
i: integer;
begin
Result:= false;
for i:= 1 to Length(s) do
begin
if not (s[i] in ["a".."z", "A".."Z", "0".."9", "_", "-", "."]) then
Exit;
end;
Result:= true;
end;
var
i: integer;
namePart, serverPart: string;
begin
Result:= false;
i:= Pos("@", Value);
if i = 0 then
Exit;
namePart:= Copy(Value, 1, i - 1);
serverPart:= Copy(Value, i + 1, Length(Value));
if (Length(namePart) = 0) or ((Length(serverPart) < 5)) then
Exit;
i:= Pos(".", serverPart);
if (i = 0) or (i > (Length(serverPart) - 2)) then
Exit;
Result:= CheckAllowed(namePart) and CheckAllowed(serverPart);
end;


 
Sherbacov ©   (2003-07-22 18:05) [6]

В FAQ посмотрю.



Страницы: 1 вся ветка

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-10203
Hollywood
2003-07-23 11:38
2003.08.04
Как сделать, чтоб второе окно отобразилось в Taskbar е?


1-10187
Fay
2003-07-22 09:57
2003.08.04
Порядок сообщений


14-10458
Сатир
2003-07-16 21:09
2003.08.04
Почему девушки ломаются?


7-10484
Alta
2003-05-23 07:36
2003.08.04
Права на печать


14-10359
DenKop
2003-07-17 14:18
2003.08.04
Где взять простой ftp сервер для win.