如何快速确定正则表达式计算的ip范围

时间:2014-05-15 17:15:23

标签: regex ip expression range

我已经获得了一个寻找一系列IP地址的正则表达式。我可以坐下来手动确定它搜索的IP范围,但我想知道是否有一个工具可以为我做这个。我找到了许多相反的工具(取一个ip范围并将其转换为正则表达式)。

这是一个正则表达式示例:^ 192.22。([0-9] | [1-9] [0-9] | 1([0-9] [0-9])| 2( [0-4] [0-9] | 5 [0-5]))([0-9] |。[1-9] [0-9] | 1([0-9] [0-9] )| 2([0-4] [0-9] | 5 [0-5]))$

这适用于什么范围,并以最快捷/最简单的方式获得它?

谢谢!

2 个答案:

答案 0 :(得分:2)

在一般情况下,无法生成与任意正则表达式匹配的所有字符串。我怀疑是否有人为你的案件写了专门的工具。

无论如何,你的例子简单而惯用;它查找两个虚线八位字节值,即一位数,或两位数,或以1开头的三位数,或三位数,以2开头,后跟一位小于5的数字,或25后跟一位小于6的数字;换句话说,0-255。所以范围是192.22.0.0-192.22.255.255(192.22.0.0/16)。

答案 1 :(得分:0)

网络工具Regexplained可能会帮助您更好地理解正则表达式!

正如tripleee所提到的,正则表达式捕获IP范围192.22.0.0到192.22.255.255

但是,因为句点(。)没有被转义,所以它也错误地捕获了一个字符串,如:

192.22.255

应使用反斜杠修正正则表达式:

^192\.22\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$