我有此代码:
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 :(得分:2)
对00
进行负向查找,然后重复两位数字:
/^COD(?:(?!00)[0-9]{2}|0)$/
https://regex101.com/r/wHL9Wg/1
这允许COD0
,但是-如果不希望如此,则该模式不应包含|0
交替:
/^COD(?!00)[0-9]{2}$/
答案 1 :(得分: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);