Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизИсключение неправельных адресов 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c