如何检查用户输入的Email合法

wolfAone 2001-07-30 02:21:33
本人开发的一套系统中要求注册用户输入Email,所以输入时要对用户的Email的合法性检查,请问如何实现。
...全文
137 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolfAone 2001-07-31
  • 打赏
  • 举报
回复
谢谢各位啦,分有限,大家分一点,别嫌少哦。
kylix2001 2001-07-31
  • 打赏
  • 举报
回复
Delphi化?不是很难吧?我试试。:)

var
mail,text: AnsiString;
list :TStringList;
i,j,pos1,left,right: integer;
begin
list:=TStringList.Create;
list.LoadFromFile('C:\mail.txt');
for i:=0 to list.Count-1 do
begin
text:=list.Strings[i];
pos1=pos('@',text);
if pos1>0 then
begin
while pos1>0 do
begin
left:=1; right:=Length(text);
for j := pos1-1 downto 1 do
begin
if (not isalnum(text[i]) and text[i]<>'.') then
begin
left := i+1;
break;
end;
end;
for j := pos1+1 to Length(text)-1 do
begin
if (not isalnum(text[i]) and text[i]<>'.') then
begin
right := i-1;
break;
end;
end;
mail := copy(text,left,right-left+1);
Delete(text,left,right-left+1);
pos1 := Pos('@',text);
end;
end;
list.Free;
end;

==============================================================
不好意思,我是菜鸟,一时手痒,练练手而已,错误肯定是免不了的
请多多指正。:)
ExitWindows 2001-07-31
  • 打赏
  • 举报
回复
up
tikkypeng 2001-07-30
  • 打赏
  • 举报
回复
关注
wolfAone 2001-07-30
  • 打赏
  • 举报
回复
To : wjzhuang(困惑中的程序猪):能否将其Delphi化呢?不好意思的很,我对bcb不是很懂啦。


To:zzutlink(来溜达) And ghz2000(编程马大哈):我要的严格的检查,谢谢。 
zzutlink 2001-07-30
  • 打赏
  • 举报
回复
function CheckEmail(str:string):Boolean;
begin
if (Pos('@',str)>1) and (Pos('@',str)<Pos('.',str))
and (Pos('.',str)<length(str)) then
begin
Result := True ; //合法
end
else begin
Result := False ; //非法
end;
end;
wjzhuang 2001-07-30
  • 打赏
  • 举报
回复
用bcb写的一个例子(不是我写的)
回复人:millet(小米) (2001-3-21 11:00:00) 得0分
AnsiString mail;
TStringList *list=new TStringList();
list->LoadFromFile("C:\\mail.txt");
for(int i=0;i<list->Count;i++)
{
AnsiString text=list->Strings[i];
int pos=text.Pos('@');
if(pos>0)
{
for (;pos>0;)
{
int left=1,right=text.Length();
for(int i = pos-1;i>0;i--)
{
if (!isalnum(text[i]) && text[i]!='.')
{
left = i+1;
break;
}
}
for (int i = pos+1;i<text.Length();i++)
{
if (!isalnum(text[i]) && text[i]!='.')
{
right = i-1;
break;
}
}
mail = text.SubString(left,right-left+1);
text.Delete(left,right-left+1);
pos = text.Pos('@');
}
}
}
或者
回复人:skyyoung(路人甲) (2001-3-21 11:31:00) 得0分
正则表达式。但想知道C++Builder有没有提供正则表达式的类

var objRegExp = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)¦(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;

//check for valid email
return objRegExp.test(strValue);

ghz2000 2001-07-30
  • 打赏
  • 举报
回复
字符串操作而已
判断@和·的位置
pos('@',emailStr)<pos('.',emailStr)
wolfAone 2001-07-30
  • 打赏
  • 举报
回复
嘎有人知道吗?

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧