2016-12-28 6 views
0

Ich brauche Stringfollow bekommen dieses Format (C-001 und C-001-C)Fehler Verwendung PHP preg_match nicht Zeichenfolge übereinstimmen

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

Dies ist mein Code

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

Aber Ergebnis 3 anzeigen Schnur (C-001, C-002C, C-003-C), C-002C ist falsch, wie man es repariert?

Antwort

1

In Ihrer aktuellen Regex suchen Sie nach C- gefolgt von Ziffer. Wenn Sie 3 Ziffern möchten, sollten Sie [0-9]{3}

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

verwenden, wenn Sie möchten, auch eine andere -C erlauben können Sie (-C)? (das Fragezeichen verwenden, ist es als eine optionale Gruppe:

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

Hier ist eine Arbeits Beispiel:
https://regex101.com/r/0JHN43/1

Und dieses ist im Inneren des preg_match Block Sie haben:

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