Соответствующие строки с подстановочными знаками в Ruby - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть несколько IP-адресов:

127.0.0.1
192.168.*
200.*

Как быстро и легко сопоставить данный IP-адрес с этими диапазонами. Потенциально могут быть тысячи шаблонов, таких как приведенные выше.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Чтобы избавить вас от боли, вы должны использовать CIDR-адреса вместо строковых подстановочных знаков.Это общепринятое обозначение для сетей и разумных диапазонов IP-адресов.Вы найдете широкую поддержку этой нотации на любом языке.

В вашем случае сети будут

127.0.0.1/32 (or just simply 127.0.0.1)
192.168.0.0/16
200.0.0.0/8

. Вы можете использовать что-то вроде встроенного IPAddrclass или IPAddress gem для их анализа.

С помощью IPAddress gem вы можете сделать что-то вроде этого (не проверено):

range = IPAddress("192.168.0.0/16")
ip = IPAddress("192.168.3.5")
range.include? ip # returns true
0 голосов
/ 14 февраля 2012

Следующие должны совпадать,

\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...