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 秒后,我得到了这个网址: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 回答