【发布时间】:2021-07-20 19:23:08
【问题描述】:
例如,我有这四个 ip 地址:
10.100.0.11;错了
10.100.1.12;不错
10.100.11.4;不错
10.100.44.1;错了
任务有简单的规则。第三名不能是0,第四名不能是solo 1。 我需要从不同路由器的 ip 表中选择它们,我只知道这个规则。 我的解决方案:
^(10.100.[1-9]{1,3}.[023456789]{1,3})$
但在这种情况下,每个带有 1 的数字都丢失了,例如 10、100 等,因此这种解决方案是错误的。
^(10.100.[1-9]{1,3}.[1-9]{2,3})$
这解决了单1的问题,但是再做一个。
【问题讨论】:
-
您需要转义
.s,这些是正则表达式中的特殊字符。[023456789]不允许存在1,但12需要1。最后的*也是无效的,如果您希望最后一个数字是可选的,请执行{0,3}但这似乎是错误的 -
我知道 [023456789] 不允许这样做。我在问题中做了第二个,但最后可能会有一个单独的。
-
也许像
^(10[.]100[.][1-9]{1,3}[.](?:[02-9]|1\d){1,3})这样的东西适合你?更多的例子会有所帮助。那将允许10.100.44.000允许吗?这也允许大于 255 的数字,并且不允许 ipv6。 -
可能你是对的,地址是 ipv4,而 10.100.44.0 可以是一个地址,但我们没有使用它们,但你的解决方案对我有用,所以谢谢
-
^10\.100\.(?!0\.)\d+\.(?!1$)\d{1,3}$,见regex101.com/r/s36lXT/1