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