Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match, Zeichen nicht mehr als einmal im String erlauben!

Einklappen

Neue Werbung 2019

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

  • preg_match, Zeichen nicht mehr als einmal im String erlauben!

    Der User soll einen Geldbetrag in das Input Feld eingeben. Ich habe eingestellt, dass Buchstaben und Zeichen (außer Punkte und Kommas) geblockt werden und Kommas direkt in Punkte verwandelt werden. Jetzt möchte ich einstellen, dass es nicht mehr als einen Punkt geben darf. Ich hab dazu folgendes probiert:

    Code:
    if ( numval.match(/./g).length > 1 )
    	    {
    	    	curphonevar = numval.replace(Buchstaben und Sonderzeichen, aber keine punkte und Kommas);
    	    }
    	    else
    	    {
    	    	curphonevar = numval.replace(buchstaben, sonderzeichen, punkte und kommas);
    	    }
    Es macht nur nicht ganz das was es sollte. Punkte gehen gar nicht mehr, außer wenn es das einzige Zeichen im ganzen Eingabefeld ist.


  • #2
    Zitat von String Beitrag anzeigen
    Jetzt möchte ich einstellen, dass es nicht mehr als einen Punkt geben darf.
    Hm? Was ist mit:
    5.123.474,00 €

    Viele Grüße,
    lotti

    Kommentar


    • #3
      Zitat von String Beitrag anzeigen
      Es macht nur nicht ganz das was es sollte. Punkte gehen gar nicht mehr, außer wenn es das einzige Zeichen im ganzen Eingabefeld ist.
      Solch eine Fehlerbeschreibung a.la. 'funzt nich' ist nicht sehr hilfreich.
      Was gibst du als numval vor und was liefert dein Ausdruck.
      Der Punkt steht in regulären Ausdrücken für ein beliebiges Zeichen.
      Du must den Punkt also escapen.
      Bleibt die Frage, wie sinnvoll dein Ansatz ist.
      PHP-Klassen auf github

      Kommentar


      • #4
        Zitat von lottikarotti Beitrag anzeigen
        Hm? Was ist mit:
        5.123.474,00 €

        Viele Grüße,
        lotti
        In meinem Fall brauch ich die englische Schreibweise. Daher ist der Punkt das Dezimalzeichen.

        Kommentar


        • #5
          Zitat von jspit Beitrag anzeigen
          Solch eine Fehlerbeschreibung a.la. 'funzt nich' ist nicht sehr hilfreich.
          Was gibst du als numval vor und was liefert dein Ausdruck.
          Der Punkt steht in regulären Ausdrücken für ein beliebiges Zeichen.
          Du must den Punkt also escapen.
          Bleibt die Frage, wie sinnvoll dein Ansatz ist.
          das war keine "Fehlerbeschreibung a la funzt nicht" :/
          Du hast es selbst zitiert: "Punkte gehen gar nicht mehr, außer wenn es das einzige Zeichen im ganzen Eingabefeld ist."

          numval ist der Inhalt, also das value eines Eingabefeldes des Typs "text".
          Wäre es so richtig escapet?: (/[\\A-Za-z!"£$%^&\-\)\(*+_={};:'\.\,@#~

          Kommentar


          • #6
            Könnte mir jemand einen Regex Code erstellen für mein preg_replace?
            Man soll nur Ziffern, Punkte und Kommas eingeben dürfen. Man soll nur einen Punkt angeben können. Der Punkt darf nicht an erster Stelle sein. Es dürfen nach einem Punkt nur vier weitere Ziffern kommen (also nur 4 Dezimalstellen). Alle Kommas werden mit Punkten ersetzt.

            Kommentar


            • #7
              Liest du die Beiträge bzw. Hinweise auch? Es wurde doch schon auf die zwei Hauptprobleme hingewiesen:
              1. Kommt der Tausender-Punkt alle 3 Stellen: 1.000.000 (deutsches Format) bzw. 1,000,000 (englisches Format) haben jeweils 2 Kommata bzw. Punkte drin, und sind auch gültig. Im Gegensatz ist im Deutschen Format 1.000000 oder 1000.000 keine gültige Schreibweise für 1 Million.
              2. Automatische Umwandlung ist immer problematisch. 100,000 kann jetzt entweder Hunderttausend, oder Hundert-Komma-Null heißen. Du verwirrst den Nutzer nur wenn du da automatisch Sachen veränderst.

              Kommentar


              • #8
                Nimm doch was fertiges:
                http://igorescobar.github.io/jQuery-Mask-Plugin/
                Oder: http://jqueryvalidation.org/jQuery.validator.addMethod/

                Für dein regex Problem: http://regexpal.com/
                I like cooking my family and my pets.
                Use commas. Don't be a psycho.
                Blog - CoverflowJS

                Kommentar


                • #9
                  ich würde gerne das aus dem ersten link direkt übernehmen.
                  Ich verstehe allerdings nicht was ich wo und wie übernehmen muss.

                  Kommentar


                  • #10
                    Zitat von Tropi Beitrag anzeigen
                    Liest du die Beiträge bzw. Hinweise auch? Es wurde doch schon auf die zwei Hauptprobleme hingewiesen:
                    1. Kommt der Tausender-Punkt alle 3 Stellen: 1.000.000 (deutsches Format) bzw. 1,000,000 (englisches Format) haben jeweils 2 Kommata bzw. Punkte drin, und sind auch gültig. Im Gegensatz ist im Deutschen Format 1.000000 oder 1000.000 keine gültige Schreibweise für 1 Million.
                    2. Automatische Umwandlung ist immer problematisch. 100,000 kann jetzt entweder Hunderttausend, oder Hundert-Komma-Null heißen. Du verwirrst den Nutzer nur wenn du da automatisch Sachen veränderst.
                    bei den Beträgen, um die es geht in meinem Fall geht, wird der Wert nie den vierstelligen Bereich überschreiten, und ich traue dem User zu nicht dadurch verwirrt zu werden, da es rechts neben dem Eingabefeld direkt in Euro konvertiert wird und dadrüber der Kurs steht (es ist eine Art Währungskonvertierer).

                    Kommentar


                    • #11
                      Mehr Eigeninitiative bitte. Wie du ein jQuery-Plugin einbindest, wird dir hier niemand erklären.
                      I like cooking my family and my pets.
                      Use commas. Don't be a psycho.
                      Blog - CoverflowJS

                      Kommentar

                      Lädt...
                      X