1

これはIPアドレスの有効な正規表現ですか?

^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2}|0{2}|0{3})\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2}|0{2}|0{3})$
4

2 に答える 2

4

正しくありません:最初の部分((....){3}):最後の2 [0-5] {2}は201、254などを許可しますが、239などは許可しません(つまり、最後の桁> 5 )。

さて、検索エンジンで5秒間検索すると、次のURLが表示されます:http://answers.oreilly.com/topic/318-how-to-match-ipv4-addresses-with-regular-expressions/

そして、@ Sigardaveが指摘したように、より「ローカルな」ソリューション^^(つまり、インターネットの同じ領域にある):DNSホスト名またはIPアドレスに一致する正規表現?

于 2013-01-07T11:57:13.650 に答える
2

これは、標準ライブラリのIPAddrが行う方法です。

# Returns +true+ if +addr+ is a valid IPv4 address.
def valid_v4?(addr)
  if /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/ =~ addr
    return $~.captures.all? {|i| i.to_i < 256}
  end
  return false
end
于 2013-01-07T14:09:25.040 に答える