Php 用于使用短掩码检查ip地址的Regualr表达式

Php 用于使用短掩码检查ip地址的Regualr表达式,php,validation,ip-address,Php,Validation,Ip Address,我想用掩码验证IP地址,如下所示:192.168.32.4/24但我只找到了如何在没有掩码的情况下验证IP:192.168.32.4 这是我的代码: $target = "192.168.34.12"; if (preg_match("/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/", $target)) { echo "correct"; } e

我想用掩码验证IP地址,如下所示:
192.168.32.4/24
但我只找到了如何在没有掩码的情况下验证IP:
192.168.32.4

这是我的代码:

$target = "192.168.34.12";

if (preg_match("/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/", $target)) {
    echo "correct";
} else {
    echo "incorrect";
}
提前谢谢

[已解决]

$target = "192.168.34.12/24";
$regex = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/([1-9]|1[0-9]|2[0-4])$/";

if (preg_match($regex, $target)) {
    echo "correct";
} else {
    echo "incorrect";
}

您的实际正则表达式是:

$regex = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/";
它可以识别这样的IP:192.168.0.150

如果您想用掩码识别IP(如192.168.32.4/24),请执行以下正则表达式:

$regex = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/([1-9]|1[0-9]|2[0-4])$/";
在最后一个正则表达式中,我只添加了
\/([1-9]| 1[0-9]| 2[0-4])
\
用于显示
/
。否则正则表达式会认为这是它自己的终结。最后一部分
([1-9]| 1[0-9]| 2[0-4])
只接受从1到24的掩码

最后,您的代码如下所示:

$target = "192.168.34.12/24";
$regex = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/([1-9]|1[0-9]|2[0-4])$/";

if (preg_match($regex, $target)) {
    echo "correct";
} else {
    echo "incorrect";
}
PS:如果你想测试你的正则表达式,这个网站很酷:

试试这个:

$target = "192.168.34.123";


if (preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$target)) {
    echo "correct";
} else {
    echo "incorrect";
}

如果在
/
处分解
,然后分别验证IP和掩码会怎么样?这不是我要找的,我想验证整个表达式,而不仅仅是IPT谢谢!这是可行的,但是掩码是从1到24。哦,好的,所以我更改了正则表达式,因为旧的一个接受从0到999的掩码。现在正则表达式从1到24,就像你说的。我编辑了答案是我的错我没有把/放在正则表达式的开头和结尾。它现在应该可以工作了,我再次编辑了答案这允许IP是这样的:777.168.34.123这将帮助你:preg_match(/^(25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)(\(25[0-5]| 2[0-4][0-9]|[01]|[0-9]| | 0-9]| 3}$/,$target或者你可以使用PHP过滤器验证IP。示例:“过滤器变量($target,filter\u VALIDATE\u IP)”