判断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]?)
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 地址是否有效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端