2016-11-21 6 views
2

私は以下の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のアドレスを検証するため、このロジックとのトラブルを私は「1.2.3.4.5」などのアドレスをテストする場合ということです、変数「チャンク」は4と評価されます。 正確に4つのオクテットがある場合にのみこのパターンが通過するように、このパターンを変更するにはどうすればよいですか?

ありがとうございました。

答えて

2

あなたはパターンの先頭/末尾にそれぞれ「文字列の先頭にマッチ」と「一致文字列の末尾に」意味^$はマッチが全体文字列を取り込む必要とするアンカーパターンを使用することができます。

local chunks = {ip:match("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")} 
関連する問題