[regexp] Preis-String Testen
-
Ach, ich seh grad, du willst . und , nicht optional haben? Musst es halt entsprechend anpassen. Für mich ist halt 100€ auch ein gültiger Preis.
ähm klar meinte ich das 100 auch eine Option ist. Habe ich vergessen, sorry. (Halt normale Preisangabe, wie es halt üblich ist)
Aber big thx schonmal für die Antworten.
-
Ich hab das Reg von nep jetzt genommen:
^[0-9]+(\.[0-9]{3})*(,[0-9]{2}$)?
Dann ist der Nachkommateil optional und die Tausendertrennung auch. Aber sowas wie: .100.100,12 oder 10.100,12,12 ist nicht möglich.
Danke nochmal an beide.
-
Was ist mit 1.234.567,89 ? Wär doch ein gültiger Preis?
-
DEvent schrieb:
^[0-9]+(\.[0-9]{3})*(,[0-9]{2}$)?
Wenn du die explizite Aufzählung der Ziffern durch die Zeichenklasse "Ziffer" ersetzt, hast du meinen ursprünglichen Ausdruck: \d+(\.\d{3})*(,\d{2})?
Wollt's nur anmerken - denn auch wenn [0-9] auf den ersten Blick klarer aussieht, würde ich dennoch \d bevorzugen. Es ist besser die Klasse zu nehmen, wenn man die Klasse meint (nicht nur weil's Schreibarbeit spart) als die Klasse jedes Mal neu zu "erfinden".
-
THX 1138 schrieb:
Was ist mit 1.234.567,89 ? Wär doch ein gültiger Preis?
Ja klar, wieso nicht?
Wenn du die explizite Aufzählung der Ziffern durch die Zeichenklasse "Ziffer" ersetzt, hast du meinen ursprünglichen Ausdruck: \d+(\.\d{3})*(,\d{2})?
Wollt's nur anmerken - denn auch wenn [0-9] auf den ersten Blick klarer aussieht, würde ich dennoch \d bevorzugen. Es ist besser die Klasse zu nehmen, wenn man die Klasse meint (nicht nur weil's Schreibarbeit spart) als die Klasse jedes Mal neu zu "erfinden".Ja stimmt hast Recht

^\d+(\.\d{3})*(,\d{2}$)?
-
Ähm, um das ^ und $ solltest du dir vielleicht noch Gedanken machen. So erkennst du einen Preis nur am Zeilenanfang. Wenn sich ein Kommateil anschließt, darf der Preis nur alleine in der Zeile vorkommen. Ohne Nachkommastellen dagegen kann direkt folgen was immer will. Sicher dass du das willst? Und um THX 1138-Einfwurf sollte man sich auch Gedanken machen. Aber beide Sachen lassen sich mit den bisher gezeigten Mitteln lösen. Muss man wohl nicht vormachen, oder?

-
minhen schrieb:
Ähm, um das ^ und $ solltest du dir vielleicht noch Gedanken machen. So erkennst du einen Preis nur am Zeilenanfang. Wenn sich ein Kommateil anschließt, darf der Preis nur alleine in der Zeile vorkommen. Ohne Nachkommastellen dagegen kann direkt folgen was immer will. Sicher dass du das willst? Und um THX 1138-Einfwurf sollte man sich auch Gedanken machen. Aber beide Sachen lassen sich mit den bisher gezeigten Mitteln lösen. Muss man wohl nicht vormachen, oder?

Welcher Einwurf? Das kapiere ich grade nicht.
Das mit dem Zeilenanfang/-Ende muss schon so sein, weil das ist nur ein 1-Zeiliges Inputfeld, in das nur der Preis reinkommen darf.
-
Ja da hat minhen schon recht. Du hast da die Klammern hinten falsch gesetzt.
Hier jetzt mal der RegEx, so wie ich vermute dass er richtig sein sollte:
^[0-9]+(\.[0-9]{3})*(,[0-9]{2})?$Nimmt jetzt z.B. auch sowas wie nur 100 oder auch 1.000.000 .
Sollte jetzt also komplett das sein was du suchst.
-
nep schrieb:
Ja da hat minhen schon recht. Du hast da die Klammern hinten falsch gesetzt.
Hier jetzt mal der RegEx, so wie ich vermute dass er richtig sein sollte:
^[0-9]+(\.[0-9]{3})*(,[0-9]{2})?$Nimmt jetzt z.B. auch sowas wie nur 100 oder auch 1.000.000 .
Sollte jetzt also komplett das sein was du suchst.Danke

Ich habs ein wenig geändert, damit auch 1.000,1 möglich ist (also nur 1 Stelle nach dem Komma).
^\d+(\.\d{3})*(,\d{1,2})?$
Wenn man die Klasse \d benutzt, dann kann man sich doch etliche [] sparen.
-
Ja das stimmt schon, aber ich habs extra nochmal mit den Klammern geschrieben, da es so vielleicht für manche besser ersichtlich ist was das Teil tut.