Reguläre Ausdrücke

Bash, Shell, PHP, Python, Perl, CGI
kane
Posts: 82
Joined: 2002-10-04 01:22

Reguläre Ausdrücke

Post 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.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Reguläre Ausdrücke

Post by Roger Wilco »

Probier mal folgenden RegEx:

Code: Select all

^[0-9]+([.,][0-9]{1,2})?$
Du hast damit mind. 1 Vorkommastelle und optional 1 oder 2 Nachkommastellen, getrennt durch Punkt oder Komma.
larsinho
Posts: 14
Joined: 2004-04-14 20:21

Re: Reguläre Ausdrücke

Post by larsinho »

preg_match("~^d+([,.]d{1,2})?$~", $num_rechnungsbetrag)

matcht 2434345,57 99,95, 5.69, 100 aber nicht 111,123 845 8900
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Reguläre Ausdrücke

Post 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.
duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Reguläre Ausdrücke

Post 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.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Reguläre Ausdrücke

Post by Roger Wilco »

Doch, '100' sollte gematched werden, weil der Nachkommateil entweder gar nicht oder 1 mal vorkommen darf -> (...)?
kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Reguläre Ausdrücke

Post 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
duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Reguläre Ausdrücke

Post 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.
larsinho
Posts: 14
Joined: 2004-04-14 20:21

Re: Reguläre Ausdrücke

Post by larsinho »

Ich meine in Erinnerung zu haben, dass der Punkt "." in Zeichenmengen [] nicht escaped werden muss, sonst natürlich schon.

Lars
larsinho
Posts: 14
Joined: 2004-04-14 20:21

Re: Reguläre Ausdrücke

Post 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)