匹配 2 个数字正则表达式 PHP 排除一个组合

Matching 2 numbers Regex PHP excluding one combination

我有这个代码:

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,这是不允许的...

有什么解决办法吗?

提前致谢

只是对 00 的否定前瞻,然后重复两个数字:

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

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

这允许 COD0,但是 - 如果这不是理想的,则模式不应包含 |0 交替:

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

您需要在正则表达式中单独指定前导 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);