Sch**** reguläre Ausdrücke - Hilfe
Mark
- perl
hi,
ich könnt mich echt aufregen.
also in einem textfeld kann der user ein preis angeben. das prog soll nun überprüfen ob der user auch den preis eingegeben hat.
die eingabe darf so aussehen:
8.000,00
8.000
8000,00
8000
und ich krieg das einfach nicht hin.
danke im voraus
Hallo,
was hast du denn bis jetzt probiert?
gruss
Hallo,
was hast du denn bis jetzt probiert?
if($q->param('price') !~ /^\d(.*)\d[,.]\d*$/) {
$error[5] = "Bitte geben Sie einen gültigen Preis an.<br>\n";
}
Hi,
/^\d(.*)\d[,.]\d*$/
eine Ziffer, gefolgt von beliebig vielen beliebigen Zeichen (bis auf Umbrüche), gefolgt von einer Ziffer, gefolgt von einem Komma oder einem Punkt, gefolgt von beliebig vielen Ziffern.
Denk noch einmal gründlich drüber nach, wie das Muster eigentlich aussieht, welches Du erkennen möchtest, was optionale und was zwingende Zeichen(-ketten) sind usw. Das einzig Richtige an obiger RegExp ist der Einsatz von "^" und "$".
Cheatah
Hi,
»»/^\d(.*)\d[,.]\d*$/
^^^
Du weisst schon, dass Zeichen, die eine besondere Bedeutung haben, maskiert werden muessen wenn nach dem urspruenglichen Zeichen gesucht werden soll? Der Punkt steht fuer jedes beliebige Zeichen.
Gruesse, Joachim
Hi,
»»/^\d(.*)\d[,.]\d*$/
^^^
Du weisst schon, dass Zeichen, die eine besondere Bedeutung haben, maskiert werden muessen wenn nach dem urspruenglichen Zeichen gesucht werden soll? Der Punkt steht fuer jedes beliebige Zeichen.
nein, steht er nicht. Jedenfalls nicht an der von Dir markierten Stelle.
Cheatah
Moin, moin!
Mir scheint
^((\d+)|(\d{1,3}(.\d{3})+))(,\d{2}){0,1}$
eine geeignete Lösung zu sein, die auch noch
8.888.888,00
etc akzeptiert und
8888.888
zurückweist.
Also
beliebig viele Ziffer
ODER
1 bis 3 Ziffer
gefolgt von mindestens
einer Gruppe aus einem Punkt und drei Ziffern
Danach ein Komma und 2 Ziffern
kein mal
ODER
ein mal
Alles klar?
Norbert
Moin, moin!
Mir scheint
^((\d+)|(\d{1,3}(.\d{3})+))(,\d{2}){0,1}$
die lösung ist endsgut.
Vielen Dank.