我想知道这是否是匹配以私有IP地址(Perl样式的Regex)开头的字符串的最佳方法:
(^127\.0\.0\.1)|(^192\.168)|(^10\.)|(^172\.1[6-9])|(^172\.2[0-9])|(^172\.3[0-1])
非常感谢!
发布于 2012-07-04 18:34:35
这与马克的正确答案相同,但现在包括IPv6私有地址。
/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/
发布于 2014-01-09 18:07:46
我已经生成了这个
REGEXP适用于A类网络:
(10)(\.([2]([0-5][0-5]|[01234][6-9])|[1][0-9][0-9]|[1-9][0-9]|[0-9])){3}
用于B类网络的REGEXP:
(172)\.(1[6-9]|2[0-9]|3[0-1])(\.(2[0-4][0-9]|25[0-5]|[1][0-9][0-9]|[1-9][0-9]|[0-9])){2}
用于C类网络的REGEXP:
(192)\.(168)(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){2}
如果您遇到任何错误,请告诉我
如果您确信您的输出(例如netstat),并且您不需要检查IP地址的有效性,因为已经这样做了,那么您可以使用这个公式来捕获私有ip地址
grep -P“(10.|192.168|172.16-9.|172.20-9.|172.301.)grep”
发布于 2017-06-03 00:41:51
下面是我在python中使用的代码:
rfc1918 = re.compile('^(10(\.(25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[0-9]{1,2})){3}|((172\.(1[6-9]|2[0-9]|3[01]))|192\.168)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[0-9]{1,2})){2})$')
如果愿意,您可以删除^和/或$锚点。
我更喜欢上面的正则表达式,因为它剔除了无效的二进制八位数(任何大于255的值)。
示例用法:
if rfc1918.match(ip):
print "ip is private"
https://stackoverflow.com/questions/2814002
复制相似问题