2016-11-08 3 views
-2

Dies ist mein Code:regexp in PHP: enthalten kann, aber nicht muss

<?php 
if(preg_match('"^[0-9 ]*/[0-9 ]*$"', "1 23/45 67 89")) { 
    echo "Match pattern!"; 
} else { 
    echo "Doesn't match pattern!"; 
} 
?> 

Wie sich ändern: String / enthalten können, aber nicht über / enthalten Muster übereinstimmen?

Beispiele:

"1 23/45 67 89"; match pattern 
"1 2345 67 89"; match pattern 
"1 23/45 /67 89" doesn't match pattern (because of two `/`) 
"1 23/45 67A 89" doesn't match pattern (because of unhallowed character `A`) 
+0

* müssen aber nicht *? – Jim

+0

"muss nicht", denke ich. Also entweder oder mit dem '/'. – junkfoodjunkie

+0

Wenn es ein '/' in der Zeichenkette gibt, muss es nur einmal vorkommen? – junkfoodjunkie

Antwort

1

Dies sollte, dann arbeiten:

<?php 
if(preg_match('"(^[0-9 ]*\/[0-9 ]*$)|(^[0-9 ]*$)"', "1 23/45 67 89")) { 
    echo "Match pattern!"; 
} else { 
    echo "Doesn't match pattern!"; 
} 
?> 
+0

Danke, genau das habe ich gesucht. – David

+1

Warum nicht nur '^ [0-9] * (?: \/[0-9] *)? $' –

+0

Weil ich nicht so gut mit Regex bin, und ich benutze, was ich weiß funktioniert :) Das funktioniert nur gut, und ich habe etwas gelernt. – junkfoodjunkie

1

Putting ? nach einem Muster es optional macht. So sollte diese regexp tun, was Sie wollen:

'"^[0-9 ]*/?[0-9 ]*$"' 

Siehe Optional Items

Verwandte Themen