项目中使用了lua,需要判断一个字符串是否是正确的ip格式.记录下写出的判断函数.合法返回原ip字符串,不合法返回false
--判断ip是否合法
function JudgeIPString(ipStr)
if type(ipStr) ~= "string" then
return false;
end
--判断长度
local len = string.len(ipStr);
if len < 7 or len > 15 then --长度不对
return false;
end
--判断出现的非数字字符
local point = string.find(ipStr, "%p", 1); --字符"."出现的位置
local pointNum = 0; --字符"."出现的次数 正常ip有3个"."
while point ~= nil do
if string.sub(ipStr, point, point) ~= "." then --得到非数字符号不是字符"."
return false;
end
pointNum = pointNum + 1;
point = string.find(ipStr, "%p", point + 1);
if pointNum > 3 then
return false;
end
end
if pointNum ~= 3 then --不是正确的ip格式
return false;
end
--判断数字对不对
local num = {};
for w in string.gmatch(ipStr, "%d+") do
num[#num + 1] = w;
local kk = tonumber(w);
if kk == nil or kk > 255 then --不是数字或超过ip正常取值范围了
return false;
end
end
if #num ~= 4 then --不是4段数字
return false;
end
return ipStr;
end