Meine RegEx...

Scorp1337

Erfahrenes Mitglied
Hallo..
irgendwie bin ich am verzweifeln!
Ich hab eigentlich nur meinen Regulären ausdruck, der nicht funktioniert, um den es hier geht:

/(([0-9]{1}|[0-9]{2}|[0-9]{3})\.([0-9]{2}))|([0-9]{1})/

Das ist er, den ich verwende! ...und um es zu verdeutlichen heir nochmal ein wenig auseinandergenommen:
/(([0-9]{1}|[0-9]{2}|[0-9]{3})\.([0-9]{2})) | ([0-9]{1})/

Es ist doch so, dass dieses Pattern auf alle zutrifft, die entweder 1-3 Zahlen, dann einen punkt und danach nochmal 2 zahlen haben, oder auf eine zahl richtig?
 
Zuletzt bearbeitet:
also es geht sich um folgendes (<< paul panzer xD)...

Preise... sollen mit regex "vervollständigt" werden...
Die Ausgabe der Zahlen kommen in folgenden Formaten
5.16
5.1
5

Und jetzt soll NUR das preg_match = 0 sein, wenn 5.1 rauskommt! ...denn nur wenn preg_match = 0 ist soll eine 0 ans ende angefügt werden. Verstehst?

Und zur Zeit gibt er mir bei meinem pattern diese sachen aus:
5.16 (richtig)
5.10 (richtig)
50 (falsch)

Deswegen möchte ich, dass das pattern auf 5.16 und 6 zutrifft
 
Zuletzt bearbeitet:
Bin mir jetzt net sicher ob du das so meinst:
wenn 5.16 -> passt so, nix machen
wenn 5.1 -> 0 anhängen zu 5.10
wenn 5 -> .00 anhängen zu 5.00 ?

if(strlen($wert) == 3){
$wert .= "0"
}
if(strlen($wert) == 1){
$wert .= ".00"
}

... ;)
 
Bin mir jetzt net sicher ob du das so meinst:
wenn 5.16 -> passt so, nix machen
wenn 5.1 -> 0 anhängen zu 5.10
wenn 5 -> .00 anhängen zu 5.00 ?

if(strlen($wert) == 3){
$wert .= "0"
}
if(strlen($wert) == 1){
$wert .= ".00"
}

... ;)

ich weiss, dass es in PHP zu lösen ist, da ich das gesamte ja auch in PHP geschrieben hab.
Allerdings arbeite ich hier an einer 500 Zeilen datei, in der der das preg_match ca. 19 mal verwendet wurde.
Ich könnte das jetzt alles umschreiben, das ist aber unnötig bzw. ich will es nicht machen, da der aufwand nicht lohnt.
Aber ja, du hast recht, so sollte es eigentlich sein, doch um den aufwand zu schonen, werd ich mich damit zufrieden geben, dass:
a) wenn 5.16 => 5.16 (passt)
b) wenn 5.1 => 5.10 ( + 0 am ende)
c) wenn 5 => 5 (passt)
Also soll halt das pattern auf a) und b) zutreffen. Zur Zeit ist es so, dass wenn das pattern zutrifft gibt er nur das $ergebnis aus, aber wenn pattern nicht zutrifft gibt er $ergebnis aus udn hinten dran ". 0 ." und dadurch kommt halt das 50 raus.
 
@ Gumbo:

könntest du den auch noch erklären?! :)
Es funktioniert genau so wie es soll! :) Super Danke!
Aber so ganz verstehen tu ich den ausdruck nicht....
(ja ich kenne: RegEx Tutorial)

^(?:[0-9]|[1-9][0-9]{1,2})(?:\.[0-9]{2})?$
 
Zurück