如何判断一个字符串是否为正确的IP地址

 1.正则表达式法

这个函数可以判断一个字符串是否IP地址,配合正则表达式。  
  正则表达式类下载地址:http://www.delphifans.com/SoftView/SoftView_500.html  
   
  uses   RegExpr;  
   
  //如果是IP地址返回True,否则,返回False  
  function   ISIPAddr(St:string):Boolean;  
  var  
      Sar:array[1..4]   of   string;  
      St:string;  
      I:Integer;  
      j:Integer;  
      NOIP:Boolean;  
  begin  
      Result:=ExecRegExpr   ('^/s*(/d{3}|/d{2}|/d{1})/.(/d{3}|/d{2}|/d{1})/.(/d{3}|/d{2}|/d{1})/.(/d{3}|/d{2}|/d{1})/s*$',   st);  
      if   Result   then  
      begin  
            for   J:=1   to   3   do  
            begin  
                I:=Pos('.',st);  
                Sar[J]:=Copy(st,1,I-1);  
                St:=Copy(st,I+1,Length(St)-I);  
            end;  
            Sar[4]:=St;  
      end;  
      for   J:=1   to   4   do  
      begin  
          if   StrToInt(Sar[J])>255   then  
          begin  
              Result:=False;  
              Break;  
          end;  
      end;  
  end;

 

2.函数

(一)

function   TForm1.IsIPString(IPStr:   string):   Boolean;  
  var  
      i,DotNum:integer;  
      Tmpstr:string;  
  begin  
      Result:=true;  
      DotNum:=0;  
      for   i:=1   to   Length(IPStr)   do  
          Case   IPStr[i]   of  
              '0'..'9','.':  
                  begin  
                  if   IPStr[i]<>'.'   then  
                      begin  
                          Tmpstr:=Tmpstr+IPStr[i];  
                          if   StrtoInt(tmpstr)>255     then  
                          begin  
                              Result:=False;  
                              exit;  
                          end;  
                      end  
                  else  
                      begin  
                          if   (TmpStr='')and(DotNum>0)   then     //如果连续2个点的情况  
                          begin  
                              Result:=False;  
                              Exit;  
                          end;  
                          Tmpstr:='';  
                          DotNum:=DotNum+1;  
                      end;  
                  end;  
              else  
                  begin   Result:=false;   exit;   end;  
          end;  
      if   DotNum<>3   then   Result:=False;  
  end;

(二)

function   IsValidIP(const   IP:   string):   Boolean;  
  {  
      判断字符串IP是否是一个合法的IP地址?     是,返回True,否则返回False  
  }  
  var  
      Ar:   TStringDynArray;  
      i:   integer;  
  begin  
      result   :=   False;  
      Ar   :=   SplitString(IP,   '.');  
      if   Length(Ar)   <>   4   then   Exit;  
      for   i   :=   Low(Ar)   to   High(Ar)   do  
      try  
          if   not   (StrToInt(Ar[i])   in   [0..255])   then   Exit;  
      except  
          Exit;  
      end;  
      result   :=   True;  
  end;

 

3.winsock方法 

uses winsock

...

 

if   inet_addr(pchar(ip))   =   -1   then    
      showmessage('非法IP')  
  else  
      showmessage('合法IP');

你可能感兴趣的:(正则表达式,String,function,Integer)