MudGuard: preg_match | Zahl >=500 bis 9 000 000 erlauben

Beitrag lesen

Hi,

if(!preg_match("/^(([5-9][0-9][0-9])|([1-9]+\.+[0-9][0-9][0-9]+\.?+[0-9]?[0-9]?[0-9]?))$/i", $wert))

Irgendwie hab ich den Eindruck, daß Du relativ planlos Teile, die Du irgendwo in Regexen gesehen hast, zusammenwirfst.

Der Ausdruck ist schon syntaktisch falsch - das Plus nach dem ? ist dort nicht erlaubt.
Wenn man das wegläßt, ergibt die zweite Alternative

([1-9]+.+[0-9][0-9][0-9]+.?[0-9]?[0-9]?[0-9]?

Das erlaubt z.B.
1111111111111...............0099999999999999.

Die vielen Einser wegen [1-9]+
Die vielen Punkte wegen .+
Die zwei Nuller für [0-9][0-9]
Die vielen Neuner für [0-9]+
Der Punkt für .?
Danach nichts mehr, da nach den letzten 3 [0-9] jeweils ein ? steht.

Wie bereits gesagt: Prüfe, ob nur Ziffern vorhanden sind. Mit Regex ^\d+$, und erledige die Bereichsprüfung mit $x >= 500 && $x <= 9000000.
Den Bereich mit Regex prüfen zu wollen, ist sehr aufwendig.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.