它是IP地址的有效正则表达式

时间:2013-01-07 11:39:24

标签: ruby regex

这是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})$

2 个答案:

答案 0 :(得分:4)

不正确:在第一部分((....){3}):最后2 [0-5] {2}将允许201,254等,但不允许239等(即最后一次)数字> 5)

现在,搜索引擎中的5秒搜索给了我这个网址:http://answers.oreilly.com/topic/318-how-to-match-ipv4-addresses-with-regular-expressions/

正如@Sigardave指出的那样,一个更“本地化”的解决方案^^(即,在互联网的同一区域):Regular expression to match DNS hostname or IP Address?

答案 1 :(得分: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