2016-12-28 87 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)) {