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

Beitrag lesen

Danach nichts mehr, da nach den letzten 3 [0-9] jeweils ein ? steht.

Das Fragezeichen sagt nur aus, es KANN noch eine Zahl folgen muss aber nicht. Siehe
hier

"kann muss aber nicht" sicher - aber entscheidend dafür ist das + - das bedeutet 1 oder mehrfach

Wenn man das isoliert betrachtet [0-9]+.? bedeutet 0. oder 00. oder 001. oder 12331233312. oder 123123133123 oder 12222222222222222222222222222222222222222222222222222222222222222222222222222.

Das ist nicht was du willst - wenn du nur dreiergruppen erlauben willst, dann kannst du auf ([0-9]{3}.?){0,2} als Untermuster prüfen. Du willst bei den Ziffergruppe in der mitte ja exakt drei Ziffern optional gefolgt von einem Tausendertrennzeichen und diese Wiederholung 0, 1 oder 2x