匹配IP地址与域名的正则表达式
⼀个完整的域名,由根域、顶级域、⼆级、三级……域名构成,每级域名之间⽤点分开,每级域名由字母、数字和减号构成(第⼀个字母不能是减号),不区分⼤⼩写,长度不超过63。
单独的名字可以由正则表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}来匹配,⽽完整的域名⾄少包括两个名字(⽐如google,由google和com构成),最后可以有⼀个表⽰根域的点(在规范中,最后有⼀个点的才是完整域名,但⼀般认为包括两个以上名字的域名也是完整域名,哪怕它后⾯没有点)。
匹配完整域名的正则表达式:
复制代码代码如下:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
⼀个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 1\d\d 百位为1的三位数
200~249 2[0-4]\d 三位数,百位是2,⼗位是0~9
250~255 25[0-5] 三位数,百位是2,⼗位是5,个位是0~5
写成正则表达式,即:(\d|([1-9]\d)|(1\d\d)|(2[0-4]\d)|(25[0-5])),但是这样的正则表达式在匹配254这样的字串时,会分别匹配2、5、4,得到3个匹配,达不到预期效果,正确做法是将次序颠倒为((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d),因为在
(xxx|yyy)这种匹配⾏为中,是从左向右搜索的。
完整的正则表达式是:
复制代码代码如下:正则匹配 链接 无域名的链接
((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)(\.((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)){3}
按:
象061这样的⾼位为0的数是不能被匹配的。
因此,最上⾯(1. 部分)的写法才是正确完整版的,(2. 部分)的写法较为⽚⾯
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论