Was ist an diesem RegEx falsch?

ExAByte

Mitglied
Hallo,

ich versuche eine Eingabe zu matchen und zwar darf eine Zahl eingegebene werden ($line) die aber mit und ohne Komma also zum Beispiel eine
134
aber auch
233,21
aber auch
223.221
eingegeben werden

MEIN REGEX
if(eregi('^[0-9]+(?[0-9]{1,})$', $line))

DANKE EUCH!
 
So gehts!

Hallo,

also wenn ich es richtig verstanden habe, sollte folgendes funktionieren:

if(!eregi('[0-9]{1,3}(\.[0-9]{3})*(,[0-9]{1,2})?$', $line)) {
echo 'Gueltige ZAHL';
}

Tausenderpunkt wird akzeptiert, ebenso das Komma aber auch eine Ganzzahl. Gleichermaßen sind nur zwei Nachkommestellen erlaubt. Ich habe den Regex gerade getestet, bei mir läuft er in dieser Variation.

Gruß
PHP-SNIPPET.DE ;-)
 
@Create:
Kann ich nicht bestätigen. Erstens gibt dein Codeschnipsel nur genau dann 'Gueltige ZAHL' aus, wenn der reguläre Ausdruck nicht zutrifft (durch den Operator '!'). Zweitens lässt dein regulärer Ausdruck z.B. auch folgende Zeichenketten durch:
Code:
blablubb123
1.2.3.4
1.23.45,6
Und nach Tausenderabgrenzungen war IMO nicht gefragt.

Wollt ich nur mal so anmerken.
 
Zuletzt bearbeitet:
RegEx

Hallo,

richtig, ist mir noch gar nicht aufgefallen.

Habe ihn noch mal modifiziert, das eregi ist glaube ich aus der "Macht der Gewohnheit" entstanden
- Mein Fehler, ich gelobe Besserung.
Danke für den Hinweis!

if(eregi('^[0-9]{1,}(\.[0-9]{1,})*(,[0-9]{1,})?$', $line)) {
// Tue dies!
}

PS: Sollte mir ein paar Qualitätssicherer aus dem Produktmanagement einkaufen :)

Greetz CreAte
 
Zuletzt bearbeitet:
Zurück