正则表达式使用八位字节表示法匹配IPv4地址中的范围

时间:2018-12-11 14:20:28

标签: regex ip-address

我想使用正则表达式来获取提供的IP地址中的所有范围。

示例:

192.168.0-255.1将返回0-255

192.168.0-255.1-10将返回0-255和1-10

192.168.0-10,42,80-200.1-10,128-255将返回0-10、80-200、1-10、128-255。

奖金:我还希望能够将这些表达式分成4个不同的表达式,以确定IP范围位于哪个八位字节中。 示例:192.168-180.0.1我想从一个表达式中获得168-180,该表达式寻找一个匹配,该匹配仅在子字符串的左边有一个句点,而在子字符串的右边是两个句点。

1 个答案:

答案 0 :(得分:0)

像这样吗?

<?php
$input = <<<INPUT
192.168.0-255.1
192.168.0-255.1-10
192.168.0-10,42,80-200.1-10,128-255
INPUT;

preg_match_all("/[0-9]+\-[0-9]+/m", $input, $m);

print_r($m);

输出:

Array
(
    [0] => Array
        (
            [0] => 0-255
            [1] => 0-255
            [2] => 1-10
            [3] => 0-10
            [4] => 80-200
            [5] => 1-10
            [6] => 128-255
        )

)

[0-9] +1个或多个 -“-”越狱 [0-9] +1个或更多数字