Page 1 of 1
Reguläre Ausdrücke
Posted: 2004-09-02 10:39
by kane
Hi!
Habe ein Prob mit regulären Ausdrücken...
Ich möchte eine Eingabe (Betrag) auf Gültigkeit prüfen. Das Format soll XXXX,XX oder XXXX.XX sein.
Mein Problem ist, das ich die Nachkommastellen nicht prüfen kann...
Ich kann immer mehr als 2 Nachkommastellen eintragen. Bei 2 soll aber Schluß sein ;)
Habe bisher folgendes geschrieben:
Code: Select all
$reg_expr_rechbetrag = eregi("^[0-9].[.]?[0-9]{0,1}", $num_rechnungsbetrag);
Habe gegoogelt und auch hier schon geschaut und dementsprechend schob probiert... aber es klappt nicht :(
Danke im Voraus.
Re: Reguläre Ausdrücke
Posted: 2004-09-02 12:42
by Roger Wilco
Probier mal folgenden RegEx:
Du hast damit mind. 1 Vorkommastelle und optional 1 oder 2 Nachkommastellen, getrennt durch Punkt oder Komma.
Re: Reguläre Ausdrücke
Posted: 2004-09-02 12:44
by larsinho
preg_match("~^d+([,.]d{1,2})?$~", $num_rechnungsbetrag)
matcht 2434345,57 99,95, 5.69, 100 aber nicht 111,123 845 8900
Re: Reguläre Ausdrücke
Posted: 2004-09-02 12:58
by Roger Wilco
Larsinho wrote:preg_match("~^d+([,.]d{1,2})?$~", $num_rechnungsbetrag)
matcht 2434345,57 99,95, 5.69, 100 aber nicht 111,123 845 8900
Du hast glaube ich vergessen, den Punkt zu escapen. Sonst kann da jedes beliebige Zeichen stehen.
Re: Reguläre Ausdrücke
Posted: 2004-09-02 13:03
by duergner
Larsinho wrote:preg_match("~^d+([,.]d{1,2})?$~", $num_rechnungsbetrag)
matcht 2434345,57 99,95, 5.69, 100 aber nicht 111,123 845 8900
Ich glaube nicht, dass 100 gematched wird. Es muss ja am Ende entweder '.' oder ',' gefolgt von mindestens einer Zahl stehen. Außerdem natürlich noch das Problem mit dem nicht escapeden Punkt.
Re: Reguläre Ausdrücke
Posted: 2004-09-02 13:13
by Roger Wilco
Doch, '100' sollte gematched werden, weil der Nachkommateil entweder gar nicht oder 1 mal vorkommen darf -> (...)?
Re: Reguläre Ausdrücke
Posted: 2004-09-02 13:30
by kane
Juhu!
Danke euch! Funzt prima... jetzt muss ich aber erstmal über die Syntax schauen, damit ich das auch verstehe was da jetzt abläuft...
Danke nochmal und Gruß
Kane
Re: Reguläre Ausdrücke
Posted: 2004-09-02 15:13
by duergner
Roger Wilco wrote:Doch, '100' sollte gematched werden, weil der Nachkommateil entweder gar nicht oder 1 mal vorkommen darf -> (...)?
Stimmt hast du recht. Den hab ich glatt überlesen - Asche auf mein Haupt.
Re: Reguläre Ausdrücke
Posted: 2004-09-02 20:42
by larsinho
Ich meine in Erinnerung zu haben, dass der Punkt "." in Zeichenmengen [] nicht escaped werden muss, sonst natürlich schon.
Lars
Re: Reguläre Ausdrücke
Posted: 2004-09-02 20:48
by larsinho
Kane wrote:jetzt muss ich aber erstmal über die Syntax schauen, damit ich das auch verstehe was da jetzt abläuft...e
Code: Select all
^ // muss anfangen mit ...
d+ // einer Ziffer (= "d" ) beliebig viele hintereinander, aber mindestens eine
( // was jetzt kommt, kann, muss aber nicht folgen. Deswegen das "?" nach der schließenden Klammer
[,.] // nämlich entweder ein "," oder ein "."
d{1,2} // dann eine oder zwei Ziffern
)?
$ // danach darf gar nichts mehr kommen ($ = Ende)