lua中判断一个字符串是否是合法的ip地址格式

项目中使用了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

 

你可能感兴趣的:(unity,unity--脚本,lua)