我有以下lua代码:(基于stackoverflow上的另一篇文章)
local chunks = {ip:match("(%d+)%.(%d+)%.(%d+)%.(%d+)")}
if (#chunks == 4) then
for _,v in pairs(chunks) do
if (tonumber(v) < 0 or tonumber(v) > 255) then
return false
end
end
return true
else
return false
end
验证IPv4地址的逻辑问题在于,当我测试地址如&#34; 1.2.3.4.5&#34;时,变量&#34; chunks&#34;仍然评估为4。 如何才能更改此模式,以便仅在恰好有四个八位字节时才能通过?
感谢。
答案 0 :(得分:2)
您可以使用锚点模式^
和$
,这意味着&#34;匹配字符串的开头&#34; &#34;匹配字符串结束&#34;分别在模式的开头/结尾处要求匹配捕获整个字符串:
local chunks = {ip:match("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")}