我想要识别出字符串中的Email地址,要如何实现,我找了半天都没有找到这方面的资料,请大家帮帮忙,分不够可以再加。

解决方案 »

  1.   

    简单判断可以用pos(‘@’,edit1.text)
    如果要准确判断就的用正则表达式
      

  2.   

    检查E-mail的正则表达式:\w+@((\w+[.]?)+)要在Delphi里使用正则表达式去这里看看吧:
    http://regexpstudio.com/TRegExpr/TRegExpr.html
      

  3.   

    把分拿来
    unit mainunit;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Label1: TLabel;
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function IsVaildEmailAddr(EmailAddr:String):boolean;
    var
     Number,I:integer;  //Number用于给字符'@'计数
     TempStr:String;
    begin
     TempStr:=EmailAddr;
     Number:=0;
     for I:=1 to Length(TempStr) do
       begin
         if (TempStr [I]='@') then
           INC(Number);
       end;
       if ((Number =0)or(Number >1)) then
        Result:=False//如果不含有字符'@',或者其个数大于1,则不合法
       else
       begin
        if ((TempStr [1]='@')or (TempStr [length(TempStr)]='@')) then
         Result:=False//如果字符'@'的位置在字符串开头或者末尾,则不合法
        else
        begin
         I:=pos('@',TempStr);//获取字符'@'在字符串当中的位置
         delete(TempStr,1,I);//获取字符串中字符'@'后面的剩余子串
         if (Length(TempStr)<3) then
          Result:=False       //如果剩余子串的长度小于3,则不合法
         else
         begin
          if ((pos('.',TempStr)=0)or(pos('.',TempStr)=length(TempStr))
              or (pos('.',TempStr)=1))then
           Result:=False//如果剩余的子串当中不含有字符'.',或者其位置在//子串的开头或者末尾,则不合法
          else
           Result:=True;      //以上的判断都通过,则表示地址字符串为合法
         end; 
        end;
       end; 
     end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if (Edit1.Text<>'')then
      begin
       if IsVaildEmailAddr(Edit1.Text) then
        ShowMessage('您输入的电子邮件地址格式合法!')
       else
        ShowMessage('您输入的电子邮件地址格式不合法!'); 
      end;
    end;end.