我已经运行了几个帖子,使用各种gem检查IP地址是否有效,但似乎没有一个能够确定是否正在使用CIDR格式。
例如:
irb(main):057:0> "192.168.1.1" =~ Resolv::IPv4::Regex ? true : false #=> true
=> true
irb(main):058:0> "192.168.1.1/30" =~ Resolv::IPv4::Regex ? true : false #=> true
=> false
irb(main):059:0>
和
irb(main):059:0> IPAddress.valid? "192.168.1.1"
=> true
irb(main):060:0> IPAddress.valid? "192.168.1.1/32"
=> false
是我见过的两种最常见的使用方式。如何将CIDR表示法也合并到这些验证检查中?
发布于 2021-07-29 13:52:38
如果ipaddress
gem (https://github.com/ipaddress-gem/ipaddress),则可以使用parse
方法。
解析有效地址:
3.0.0 :005 > x = IPAddress.parse "192.168.1.1/32"
=> #<IPAddress::IPv4:0x00007f92d684f010 @address="192.168.1.1", @prefix=32, @octets=[192, 168, 1, 1], @u32=3232235777>
解析无效地址会引发以下问题:
3.0.0 :006 > x = IPAddress.parse "192.168.1.1.1/32"
Traceback (most recent call last):
...
https://stackoverflow.com/questions/68565572
复制相似问题