Ein regulärer Ausdrück für alle Zahlenformate

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ein regulärer Ausdrück für alle Zahlenformate

    Hallo Zusammen,

    ich bin jetzt schon seit knapp acht Jahren PHP-Programmierer aber meine größte Schwäche sind immer noch die regulären Ausdrücke.

    Also kämpfe ich zwei bis dreimal im Jahr mit diesem Thema und habe mir jetzt endlich das Buch "Reguläre Ausdrücke" von Jeffrey E. F. Friedl von O'Reilly bestellt.

    Mein Problem: Folgende Zahlenformate möchte ich mit einem Pattern erlauben:

    -> 1.200.34
    -> 1.200,34
    -> 1 200.34
    -> 1 200,34
    -> 1200.34
    -> 1200,34
    -> 1.200.300.45
    -> 200300,45

    Also Zahlen bis zu 100 Mio in den drei Formatarten.

    Mein Lösungsansatz:

    PHP-Code:
    /^[1-9]{0,1}(\.*)[0-9]{0,3}(\.*)[0-9]{1,3}(\.|,*)[0-9]{0,2}$/
    Aber leider erlaubt mir dieses Pattern auch Zahlen wie
    -> 1.23,45
    von den Leerzeichen mal ganz zu Schweigen ...

    Es ist nicht so, dass ich es mittels PHP nicht auch anders hinbekomme aber ich bilde mir immer ein,
    dass es auch mit einem einzigen Pattern möglich sein muss!?
    Und bis mein Buch da ist, hoffe ich, dass einer von euch mir helfen kann. Im Forum habe ich leider nichts Passendes gefunden.

    Im Voraus vielen Dank!

    Gruß
    Jofris

  • #2
    z.B. sowas:

    /^[1-9](?:\d{1,2})?(?:\.| )?(?:\d{3})?(?:\.| )?(?:\d{3})?(?:\.|,)\d{2}$/

    bei dieser Lösung sind aber nur Zahlen von 1-999Mio möglich in den angegebenen Arten. Für 99'999'999 fände sich auch eine Lösung, aber für 100Mio ist es relativ schwierig.
    Wenn auch Zahlen unter 1 gematcht werden sollen könnte man das auch noch relativ einfach einbauen.
    Es sind aber genauere Angaben nötig für einen guten Regexp.

    Kommentar


    • #3
      Ich weiss nicht ob das geht, aber ev kommt is_nummeric() damit zu Recht
      Probiers mal

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Hallo jmc,

        vielen Dank!
        Bin beeindruckt.

        Hoffe das Buch lässt diesen Eindruck irgendwann ein wenig schwinden.

        Jetzt muss ich erst einmal schauen, wie du das hinbekommen hast.
        Und so schnell ...


        Vielen Dank auch an jahlives.
        Der Befehl is_nummeric erkennt nur das englische Format mit Punkt anstelle des Kommas.


        Gruß
        Jofris

        Kommentar

        Lädt...
        X