网上关于正则表达式的文章很多,但是感觉并没有很准确的ip正则表达式。
以下是个人的理解,此文章是面对对于正则表达式有一定已经的人群来说的。
首先
我们需要把ip地址给拆分成几段,每个地址池都是由0~255来着。
0-9:
\d
10-199:
这个要往下拆分成两段
10-19&100-199:
1\d?\d
20-99:
[2-9]\d
200-249:
2[0-4]\d
250-255:
25[0-5]
然后
,解释以下出现的正则表达式符号所表达的意义。
\d:
匹配一个数字字符。等价于[0-9]
?:
匹配0或1个正好在它之前的那个字符。就是它之前的字符可以出现一次或者不出现;
{}:
匹配指定数目的字符. 比如3{2}就是出现两次3。
[a-z]:
字符范围。匹配指定范围内的任意字符。比如[0-9]等价于0-9数字中的一个,[a-z]指代所有小写字母其中的一个。
|:
将两个匹配条件进行逻辑“或”(Or)运算。
最后
,我们将分开的几段表达式进行组合;
如果是分段匹配的话(对.之间的ip段进行匹配),只需要
25[0-5]|2
[0-4]
\d|1\d?\d|[2-9]\d|\d
但如果是对整段ip地址进行匹配的话
((25[0-5]|2[0-4]\d|1\d?\d|[2-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d?\d|[2-9]\d|\d)
注:这里默认的ip地址是由
0.0.0.0~255.255.255.255;
如有错误,欢迎提出。