Morgen,
ich möchte einen regulären Ausdruck erstellen, der die Eingabe einer Summe überprüft.
Folgende Kriterien sollen erfüllt werden:
- wenn mehrstellig vor einem Komma, keine führende Null.
- Summe darf 20,00 nicht überschreiten
- Nullwert ist nicht erlaubt
Das soll erlaubt sein:
0,01
1,01
0,10
10,01
10
19,99
20
20,0
20,00
Das nicht:
01,01
20,01
0
0,0
0,00
10,
Mein Ansatz bis jetzt:
(0(?=,([0-9]*[1-9]){1,1}[0-9]*){1,2}
Eine "0" gefolgt von einem Komma und ein oder zwei Ziffern 0-9 wovon mindestens einer Ziffer 1-9 ist.
|(1{1,1}[0-9]*){1,2}
oder eine 1 gefolgt von maximal einer mögicherweise vorkommenden Ziffer 0-9
|2(?=(0|0,|0,00)))
oder eine 2 aber nur wenn diese von "0" oder "0,0" oder "0,00" gefolgt wird
,{0,1}
gefolgt von einem möglicherweise einmal vorkommenden Komma
[0-9]{0,2}
gefolgt von ein oder zwei möglichweise vorkommenden Ziffern 0-9
<?php
$test = '19,01';
if (preg_match('/^(0(?=,([0-9]*[1-9]){1,1}[0-9]*){1,2}|(1{1,1}[0-9]*){1,2}|2(?=(0|0,|0,00))),{0,1}[0-9]{0,2}$/',$test)) echo 'ok';
else echo 'nicht ok';
Da scheint aber der Wurm drin zu sein :-/
Könnte mir jemand helfen?
If ($betrag >20||$betrag<0.01) ginge natürlich auch. Ich möchte aber nicht den Betrag prüfen, sondern den regulären Ausdruck dafür erstellen.
ich möchte einen regulären Ausdruck erstellen, der die Eingabe einer Summe überprüft.
Folgende Kriterien sollen erfüllt werden:
- wenn mehrstellig vor einem Komma, keine führende Null.
- Summe darf 20,00 nicht überschreiten
- Nullwert ist nicht erlaubt
Das soll erlaubt sein:
0,01
1,01
0,10
10,01
10
19,99
20
20,0
20,00
Das nicht:
01,01
20,01
0
0,0
0,00
10,
Mein Ansatz bis jetzt:
(0(?=,([0-9]*[1-9]){1,1}[0-9]*){1,2}
Eine "0" gefolgt von einem Komma und ein oder zwei Ziffern 0-9 wovon mindestens einer Ziffer 1-9 ist.
|(1{1,1}[0-9]*){1,2}
oder eine 1 gefolgt von maximal einer mögicherweise vorkommenden Ziffer 0-9
|2(?=(0|0,|0,00)))
oder eine 2 aber nur wenn diese von "0" oder "0,0" oder "0,00" gefolgt wird
,{0,1}
gefolgt von einem möglicherweise einmal vorkommenden Komma
[0-9]{0,2}
gefolgt von ein oder zwei möglichweise vorkommenden Ziffern 0-9
<?php
$test = '19,01';
if (preg_match('/^(0(?=,([0-9]*[1-9]){1,1}[0-9]*){1,2}|(1{1,1}[0-9]*){1,2}|2(?=(0|0,|0,00))),{0,1}[0-9]{0,2}$/',$test)) echo 'ok';
else echo 'nicht ok';
Da scheint aber der Wurm drin zu sein :-/
Könnte mir jemand helfen?
If ($betrag >20||$betrag<0.01) ginge natürlich auch. Ich möchte aber nicht den Betrag prüfen, sondern den regulären Ausdruck dafür erstellen.
Kommentar