2016-12-28 61 views
0

我需要得到的字符串格式如下(C-001和C-001-C)错误使用PHP的preg_match不匹配字符串

C-001 (match) 
C-002C (not match) 
C-003-C (match) 
D-004 (not match) 

这是我的代码

if(preg_match("/^C-[0-9]$/", $input_line, $output_array)) { 
    print_r($output_array); 
} else { 
    echo "NOT MATCH"; 
} 

但结果表明3字符串(C-001,C-002C,C-003-C),C-002C错误,如何解决?

回答

1

在您当前的正则表达式中,您正在寻找C-,然后是数字。如果你想3个数字,你应该使用[0-9]{3}

^C-[0-9]{3}$ 

如果你想也允许其他-C可以使用(-C)?(问号是有一个可选的组:

^C-[0-9]{3}(-C)?$ 

这里是一个工作例如:
https://regex101.com/r/0JHN43/1

而这一次是preg_match块你有内部:

if(preg_match("/^C-[0-9]{3}(-C)?$/", $input_line, $output_array)) {