判断ip地址合法

1:用正则表达式判断ip地址合法
uses
SysUtils, RegularExpressions;

function IsValidIPv4(const IP: string): Boolean;
var
Regex: TRegEx;
begin
// IPv4 地址的正则表达式
Regex := TRegEx.Create('^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$');
Result := Regex.IsMatch(IP);
end;

procedure Test;
var
IP: string;
begin
IP := '192.168.1.1';
if IsValidIPv4(IP) then
WriteLn(IP + ' 是一个合法的 IPv4 地址')
else
WriteLn(IP + ' 不是一个合法的 IPv4 地址');
end;

begin
Test;
end.
代码解释
正则表达式 ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)IPv40255IsValidIPv4IPv4TestIsValidIPv4IPv6IPv6使functionIsValidIPv6(constIP:string):Boolean;varRegex:TRegEx;begin//IPv6Regex:=TRegEx.Create((([09afAF]1,4😃7,7[09afAF]1,4|+([09afAF]1,4😃1,7😐+([09afAF]1,4😃1,6:[09afAF]1,4|+([09afAF]1,4😃1,5(:[09afAF]1,4)1,2|+([09afAF]1,4😃1,4(:[09afAF]1,4)1,3|+([09afAF]1,4😃1,3(:[09afAF]1,4)1,4|+([09afAF]1,4😃1,2(:[09afAF]1,4)1,5|+[09afAF]1,4😦(:[09afAF]1,4)1,6)|+😦(:[09afAF]1,4)1,7|:)|+fe80:(:[09afAF]0,4)0,4::(ffff(:01,4)0,1😃0,1+((25[05]|(2[04][09]|[01]?[09][09]?)).)3+(25[05]|(2[04][09]|[01]?[09][09]?))|+([09afAF]1,4😃1,4😦(25[05]|(2[04][09]|[01]?[09][09]?)).)3+(25[05]|(2[04][09]|[01]?[09][09]?))+))');
Result := Regex.IsMatch(IP);
end;
通过这个方法,您可以轻松判断给定的 IP 地址是否合法。

2:判断ip地址合法不用正则表达式
uses
SysUtils;

function IsValidIPv4(const IP: string): Boolean;
var
Segments: TArray;
Segment: string;
I, Value: Integer;
begin
Result := False;

// 按照 '.' 分割 IP 地址
Segments := IP.Split(['.']);

// 检查是否有 4 个段
if Length(Segments) <> 4 then
Exit;

// 验证每个段
for I := 0 to 3 do
begin
Segment := Segments[I];

// 检查段是否为空或非数字
if (Segment = '') or not TryStrToInt(Segment, Value) then
  Exit;

// 检查值是否在 0 到 255 之间
if (Value < 0) or (Value > 255) then
  Exit;

end;

// 如果所有检查通过,则认为是合法的 IP 地址
Result := True;
end;

procedure Test;
var
IP: string;
begin
IP := '192.168.1.1';
if IsValidIPv4(IP) then
WriteLn(IP + ' 是一个合法的 IPv4 地址')
else
WriteLn(IP + ' 不是一个合法的 IPv4 地址');
end;

begin
Test;
end.
代码解释
分割 IP 地址:

使用 Split 方法将输入的 IP 地址按照 . 分割成多个段。
检查段数量:

确保分割后的段数量为 4,否则返回 False。
验证每个段:

遍历每个段,检查其是否为空,并且是否可以转换为整数。
检查每个段的值是否在 0 到 255 的范围内。
返回结果:

如果所有段都通过了验证,则返回 True,否则返回 False。
使用示例
在 Test 过程中的示例中,您可以更改 IP 变量的值来测试其他 IP 地址的合法性。此代码将输出相应的结果,指示给定的 IP 地址是否有效。

posted @   Tomato131  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示