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