匹配IP字串、域名的正则表达式

本文介绍如何使用正则表达式匹配IP地址、域名及子网掩码。针对IP地址的匹配,详细介绍了0~255范围内数字的多种匹配方式,并给出了完整的正则表达式;对于域名,讲解了匹配完整域名的正则表达式;此外还提供了子网掩码的正则表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。IP

IP字串,由四段组成,每一段是0~255的数字,段与段之间用小数点隔开,比如61.139.2.69就是一个合法的IP字串。如果正则表达式写成d{1,3}(.d{1,3}){3}无疑是不负责的,因为它可以匹配300.400.555.666这样的非法IP字串。要匹配一个0~255之间的数,有几种匹配方式,下面是其中一种:

匹配 正则表达式 说明
0~9 d 单个数字
10~99 [1-9]d 两位数
100~199 1dd 百位为1的三位数
200~249 2[0-4]d 三位数,百位是2,十位是0~9
250~255 25[0-5] 三位数,百位是2,十位是5,个位是0~5

写成正则表达式,即:(d|([1-9]d)|(1dd)|(2[0-4]d)|(25[0-5])),但是这样的正则表达式在匹配254这样的字串时,会分别匹配2、5、4,得到3个匹配,达不到预期效果,正确做法是将次序颠倒为((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d),因为在(xxx|yyy)这种匹配行为中,是从左向右搜索的。

完整的正则表达式是:

((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d)(.((25[0-5])|(2[0-4]d)|(1dd)|([1-9]d)|d)){3}

2。 域名

一个完整的域名,由根域、顶级域、二级、三级……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过63。

很显然,单独的名字可以由正则表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}来匹配,而完整的域名至少包括两个名字(比如google.com,由google和com构成),最后可以有一个表示根域的点(在规范中,最后有一个点的才是完整域名,但一般认为包括两个以上名字的域名也是完整域名,哪怕它后面没有点)。

匹配完整域名的正则表达式:

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?

3.子网掩码

正则表达式:r'^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$'
 ---★ 本文转摘自『IT学习者』→
http://www.itlearner.com/article/4057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值