Antwort an „MudGuard“ verfassen

Hi,

ich hab einen Regex, der mir alle potenziellen Beträge aus einer Zeichenkette herausfischt: preg_match_all("/[0-9,.]+/", $el, $arr)

Allerdings matcht der auch, wenn nur , oder . in der Zeichenkette steht.

Ich will also erreichen, dass mindestens eine Ziffer vorkommen muss. Das hier führt leider zum gleichen Ergebnis: [0-9{1,},.]+ Sollte nicht eigentlich {1,} oder +genau das gewünschte besorgen?

Nein, innerhalb einer Zeichenklasse haben Quantifier (* + ? *? +? {n} {n,} {n,m}) keine Wirkung.

Eine Möglichkeit wären lookarounds (positive lookahead auf eine Ziffer), eine andere, nicht nur einfach alle erlaubten Zeichen aufzulisten, sondern den Regex entsprechend der Struktur einer Zahl aufzubauen (also Vorzeichen optional, Zifferngruppen mit Tausendertrennzeichen, Bruchteiltrenner, Nachkommastellen-Zifferngruppen mit tausendstel-Trennzeichen, ggf. noch Exponent-e, Exponent-Vorzeichen, Exponent-Ziffern ...

cu,
Andreas a/k/a MudGuard

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen