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

10 篇文章 1 订阅
3 篇文章 1 订阅

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

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值