Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-10135
Nick
2003-07-15 09:46
2003.08.04
Работа с TTable...


1-10287
Артем К
2003-07-22 07:26
2003.08.04
Как вызвать PopupMenu под компонентом (скажем под кнопкой)


1-10202
hawkins
2003-07-23 11:16
2003.08.04
Как получить дескриптор существующего файла


1-10290
Zn
2003-07-22 11:03
2003.08.04
Сохранение пропорций размеров компонентов.


14-10400
Rulja
2003-07-17 13:19
2003.08.04
Спрятать сервер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский