匹配IPv4地址的正则表达式

2018-12-13  本文已影响10人  boldcautious

本文虽然给出了匹配IPv4地址的正则表达式,但是更重要的是提供写正则表达式的一种思路。有时候使用程序而不是正则表达式可能是更好的解决方案。

IPv4地址格式可表示为:XXX.XXX.XXX.XXX,XXX的取值范围是0-255,前三段加一个.重复了三次,再与最后一段合并即组成IPv4地址的完整格式。

重点是将0-255用正则表达式表示,以下分几种方法,来分析解决。

方法1

取值区间 特点 正则写法
0-9 取值是0-9 \d
10-99 十位:1-9,个位:0-9 [1-9]\d
100-199 百位:1,十位:0-9,个位:0-9 1\d{2}
200-249 百位:2,十位:0-4,个位:0-9 2[0-4]\d
250-255 百位:2,十位:5,个位:0-5 25[0-5]

最终结果:
^((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$

方法2

取值区间 特点 正则写法
0-99 十位:1-9或空,个位:0-9 [1-9]?\d
100-199 百位:1,十位:0-9,个位:0-9 1\d{2}
200-249 百位:2,十位:0-4,个位:0-9 2[0-4]\d
250-255 百位:2,十位:5,个位:0-5 25[0-5]

最终结果:
^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])$

方法3

取值区间 特点 正则写法
0-99及110-199 百位:1或空,十位:1-9或空,个位:0-9 1?[1-9]?\d
100-149及200-249 百位:1或2,十位:0-4,个位:0-9 [1-2][0-4]\d
250-255 百位:2,十位:5,个位:0-5 25[0-5]

最终结果:
^((1?[1-9]?\d|[1-2][0-4]\d|25[0-5])\.){3}(1?[1-9]?\d|[1-2][0-4]\d|25[0-5])$

上一篇 下一篇

猜你喜欢

热点阅读