首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式中的内网IP地址标识符

正则表达式中的内网IP地址标识符
EN

Stack Overflow用户
提问于 2010-05-12 03:55:09
回答 11查看 56K关注 0票数 39

我想知道这是否是匹配以私有IP地址(Perl样式的Regex)开头的字符串的最佳方法:

代码语言:javascript
运行
复制
(^127\.0\.0\.1)|(^192\.168)|(^10\.)|(^172\.1[6-9])|(^172\.2[0-9])|(^172\.3[0-1])

非常感谢!

EN

回答 11

Stack Overflow用户

发布于 2012-07-04 18:34:35

这与马克的正确答案相同,但现在包括IPv6私有地址。

代码语言:javascript
运行
复制
/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/
票数 19
EN

Stack Overflow用户

发布于 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”

票数 15
EN

Stack Overflow用户

发布于 2017-06-03 00:41:51

下面是我在python中使用的代码:

代码语言:javascript
运行
复制
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的值)。

示例用法:

代码语言:javascript
运行
复制
if rfc1918.match(ip):
    print "ip is private"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2814002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档