IP地址的正则表达式

IPv4地址本质上是一个32位的二进制数字,并且被3个“.”分为4段,即XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX (X = 0 or 1)

每段是8位2进制数,换算到10进制,每段可表示0~255一共256个数字,例如:某主机的IP地址为10.123.8.255

对IP地址的特点进行分析,发现每段10进制数字一定在[250~255]、[200~249]、[0~199]这三个区间内

[250~255]区间 正则表达式可以写为25[0-5]

[200~249]区间 正则表达式可以写为2[0-4][0-9] ------> 2[0-4]\d

[0~199]区间又可以分为3个范围 [0~9]、[10~99]、[100~199]

                             [0~9]正则表达式可写为\d

                [10~99]正则表达式可写为[1-9]\d

                [100~199]正则表达式可写为1\d{2}

 

发现[0~99]可以写成[1-9]?\d

那么[0~199]可以写成(1\d{2})|([1-9]?\d)

所以[0~255]可以写成(25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]?\d)

 

IP地址正则表达式则是:(((25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]?\d))\.){3}((25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]?\d))

另外还有一种更加简练的写法:

[0~255]表示为2[0-4]\d|25[0-5]|[01]?\d\d?

IP地址正则表达式是:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
这种更简单的写法与上面的方法区别只是在于[0~199]的表达

 

posted @ 2014-03-10 10:15  Crazystonely  阅读(1907)  评论(0编辑  收藏  举报