匹配2个数字Regex PHP,不包括一个组合

问题描述 投票:0回答:2

我有这个代码:

preg_match('/^COD([0-9][1-9]|0)$/', $input_line, $output_array);

我想要匹配CODXX,其中XX可以从01到99。

这种方式匹配所有,除了COD10 COD20等......

如果我使用

preg_match('/^COD([0-9][0-9]|0)$/', $input_line, $output_array);

这种方式匹配所有,包括COD00,这是不允许的......

对此有何解决方案?

提前致谢

php regex preg-match
2个回答
1
投票

您需要在正则表达式中单独指定前导0值,以便排除COD00

preg_match('/^COD(0[1-9]|[1-9][0-9])$/', $input_line, $output_array);

如果你想匹配COD0,请将|0留在正则表达式中:

preg_match('/^COD(0[1-9]|[1-9][0-9]|0)$/', $input_line, $output_array);

2
投票

00只是负面预测,然后重复两位数:

/^COD(?:(?!00)[0-9]{2}|0)$/

https://regex101.com/r/wHL9Wg/1

这允许COD0,如果这不可取,那么该模式不应该包括|0交替:

/^COD(?!00)[0-9]{2}$/
© www.soinside.com 2019 - 2024. All rights reserved.