【发布时间】:2022-01-01 06:16:06
【问题描述】:
我在 php 脚本中有一个 CIDR 表示法的 IP 列表,例如
$str .= '123.23.23.4/17,';
$str .= '123.23.23.4/23,';
$str .= '123.23.23.4/8,';
$str .= '123.23.23.4/18';
我正在尝试获取斜线后的所有数字。可能的范围是 1 - 31。从我在这里找到的例子中我试过这个 3 preg_match_all("//[1-3][0-9]/", $str, $matches);
给了
/17
/23
/18
然后我尝试了
preg_match_all("/\/[1-31]{1,2}/", $str, $matches);
/1
/23
/1
所以 /8 在这两种情况下都被遗漏了,第二个返回了错误的数字。请问有人可以提供正确的命令吗?
【问题讨论】:
-
看起来你可以在
,上爆炸,然后在/上爆炸 -
Quick demo 我所说的。我通常喜欢在绝对需要之前避免使用 RegEx,但这是个人喜好。该演示更冗长,行数更多,但我认为它更容易扫描,特别是如果它包含解释它正在使用的数据的 cmets。它还将根据您的真实数据,让您有机会找到逻辑中的异常,RegEx 可能会忽略这些异常。