我有这个代码:
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,这是不允许的......
对此有何解决方案?
提前致谢
您需要在正则表达式中单独指定前导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);
对00
只是负面预测,然后重复两位数:
/^COD(?:(?!00)[0-9]{2}|0)$/
https://regex101.com/r/wHL9Wg/1
这允许COD0
,如果这不可取,那么该模式不应该包括|0
交替:
/^COD(?!00)[0-9]{2}$/