Hi,
ich möchte in einem Formular nur die Zahlen von 500 - 9 000 000 erlauben.
Ich habe u.a. diesen Code probiert. Müsste doch eigentlich klappen.. Hat jemand eine Idee?
Zahlenbereiche mit Regex zu prüfen ist eher schwierig.
Dein Suchausdruck:
^([5-9][1-9][1-9][1-9][1-9[1-9][1-9]]{3,7})$
Die Klammerung () ist überflüssig, da Du mit ^ und $ erzwingst, daß der ganze String matcht.
Der gefundene Bereich ist also, wenn es einen Treffer ergibt, der gesamte ursprüngliche String.
Bleibt also das hier:
[1][1-9][1-9][1-9][1-9[1-9][1-9]]{3,7}$
^ erzwingt das Matching am Stringanfang.
[5-9] die erste Ziffer muß also zwischen 5 und 9 (jeweils inklusive) sein. Das paßt schon nicht zu Deiner Forderung, eine Zahl zwischen 500 und 9000000 zu treffen. Denn 1000 liegt zwischen 500 und 9000000 - fängt aber mit einer 1 an, die von Dir nicht erlaubt wird.
[1-9][1-9][1-9] die zweite bis vierte Ziffer dürfen also keine 0 sein. Warum nicht? Paßt nicht zu Deiner Aufgabe.
[1-9[1-9] an fünfter Stelle darf also 1 bis 9 oder [ stehen. Dafür braucht es aber die 1-9 nicht doppelt in der Klammer ... Hm. Die [ paßt nicht zu Deiner Forderung, daß es eine Zahl sein muß.
[1-9] nochmal eine nicht-0-Ziffer.
und zum Schluß
]{3,7}$ Also ]]] oder ]]]] oder ]]]]] oder ]]]]]] oder ]]]]]]]
paßt auch nicht
Mach es Dir einfacher, und verwende höchstens einen Regex, um zu prüfen, ob der String nur aus Ziffern besteht:
[2]+$ oder ^\d+$ (hierbei ggf. den \ escapen, wenn Du "" außenrum verwendest)
Und die Prüfung auf den Zahlenbereich mit < und > bzw. <= und >= ...
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.