gpt4 book ai didi

ruby-on-rails - 如何检查字符串中的值是否为 IP 地址

转载 作者:数据小太阳 更新时间:2023-10-29 06:26:11 27 4
gpt4 key购买 nike

当我这样做的时候

ip = request.env["REMOTE_ADDR"]

我得到客户端的IP地址吧。但是如果我想验证变量中的值是否真的是 IP 怎么办?我该怎么做?

请帮忙。提前致谢。对不起,如果这个问题重复出现,我没有努力找到它......

编辑

那么 IPv6 IP 呢??

最佳答案

Ruby 在标准库中已经有了所需的正则表达式。结帐resolv .

require "resolv"

"192.168.1.1" =~ Resolv::IPv4::Regex ? true : false #=> true
"192.168.1.500" =~ Resolv::IPv4::Regex ? true : false #=> false

"ff02::1" =~ Resolv::IPv6::Regex ? true : false #=> true
"ff02::1::1" =~ Resolv::IPv6::Regex ? true : false #=> false

如果你喜欢它的捷径...

require "resolv"

!!("192.168.1.1" =~ Resolv::IPv4::Regex) #=> true
!!("192.168.1.500" =~ Resolv::IPv4::Regex) #=> false

!!("ff02::1" =~ Resolv::IPv6::Regex) #=> true
!!("ff02::1::1" =~ Resolv::IPv6::Regex) #=> false

玩得开心!

更新(2018-10-08):

从下面的评论中我喜欢非常简短的版本:

!!(ip_string =~ Regexp.union([Resolv::IPv4::Regex, Resolv::IPv6::Regex]))

使用 rails 非常优雅(也是下面的答案):

validates :ip,
:format => {
:with => Regexp.union(Resolv::IPv4::Regex, Resolv::IPv6::Regex)
}

关于ruby-on-rails - 如何检查字符串中的值是否为 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com