【发布时间】:2026-02-15 20:00:01
【问题描述】:
我想要一个可以同时封装 ipv4 子网掩码和 ipv6 前缀长度(1-128)的正则表达式。 我正在考虑扩展以下 ptype 以包括前缀长度 PTYPE 名称="IP_ADDR"
pattern="(((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]?))"
help="IP address AAA.BBB.CCC.DDD where each part is in the range 0-255"/>
新模式看起来像这样。
pattern="((((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]?)) | (12[0-8]| 1[01][0-9] | [01]?[0-9][0-9]?))"
上面的模式对吗?有人可以建议一种更好的方式来编写模式吗?
【问题讨论】:
-
如果您已经不知道它是否正确,那可能暗示这是错误的方法。如果这是正确的,我什至不会尝试去解决。我见过更糟糕的情况,但你认为要多久才会有其他人出现并且必须理解它,或者更糟的是,改变它?
-
我是新手,这是我写的第一个正则表达式。不确定它是否会起作用
-
@SumitDas: www.rubular.com
-
(((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]?))|(12[0-8]|1[ 01][0-9]|([1-9][0-9]?)
-
300 也被上述表达式接受。我相信这是由于 ([1-9][0-9]? 在表达式的末尾。我的意图是允许单个数字 [1-9] 或两位数字 [1-99] 。谁能说出为什么 300 也被接受以及解决方法?
标签: c++ regex networking