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]的表达