Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match Zeichenlänge wie 2 ODER 4?

Einklappen

Neue Werbung 2019

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

  • preg_match Zeichenlänge wie 2 ODER 4?

    ich weiss zwar wie ich von - bis und eine Mindest- und Maximallänge festlegen kann, wie aber z. B. 2 oder 4 Zeichen?
    Ich prüfe derzeit mit folgender Abfrage ob nur natürliche Zahlen vorhanden sind und zwischen 2 und 4 Zeichen.
    PHP-Code:
    if (preg_match("/[0-9]{2,4}/",$_POST['abgs']) 
    ich möchte allerdings nur 2 ODER 4 Zeichen erlauben.
    Muss ich das wirklich zweimal abfragen?
    PHP-Code:
    if (preg_match("/[0-9]{2}/",$_POST['abgs']) || preg_match("/[0-9]{4}/",$_POST['abgs'])) 


  • #2
    Zitat von Registrierer Beitrag anzeigen
    Ich prüfe derzeit mit folgender Abfrage ob nur natürliche Zahlen vorhanden sind und zwischen 2 und 4 Zeichen.
    PHP-Code:
    if (preg_match("/[0-9]{2,4}/",$_POST['abgs']) 
    Nein, das tust du mit dieser Abfrage nicht.

    Muss ich das wirklich zweimal abfragen?
    Auch innerhalb regulärer Ausdrücke gibt es die Möglichkeit, zwei Teil-Muster mittels Oder zu verknüpfen.

    Kommentar


    • #3
      Zitat von ChrisB Beitrag anzeigen
      Nein, das tust du mit dieser Abfrage nicht
      Was tut sie nicht?
      Zitat von ChrisB Beitrag anzeigen
      Auch innerhalb regulärer Ausdrücke gibt es die Möglichkeit, zwei Teil-Muster mittels Oder zu verknüpfen.
      habs mit
      PHP-Code:
      preg_match("/[0-9]{2}|[0-9]{4}/",$_POST['abgs']) 
      und
      PHP-Code:
      preg_match("/[0-9]{2,2|4,4}/",$_POST['abgs']) 
      versucht, klappt leider nicht

      Kommentar


      • #4
        Zitat von Registrierer Beitrag anzeigen
        Was tut sie nicht?
        Das:
        Ich prüfe derzeit mit folgender Abfrage ob nur natürliche Zahlen vorhanden sind und zwischen 2 und 4 Zeichen.

        Kommentar


        • #5
          Wie etwas nicht geht weiß ich ja nun, aber wieviel Datenmüll muss ich produzieren um konstruktive Antworten zu erhalten?

          Komisches Klima hier...

          Kommentar


          • #6
            Zitat von Registrierer Beitrag anzeigen
            Wie etwas nicht geht weiß ich ja nun
            Und hast du auch darüber nachgedacht, warum?
            Und wieso ist dir das selber beim Testen nicht aufgefallen?

            aber wieviel Datenmüll muss ich produzieren um konstruktive Antworten zu erhalten?
            Die Antwort zu deiner eigentlichen Frage hast du doch bekommen.

            Dass mehr Datenmüll entsteht, wenn Leute sich nicht mit den Grundlagen beschäftigt haben, liegt nun mal in der Natur der Sache.

            Kommentar


            • #7
              Dein Ausdruck prüft, ob ein String 2 bzw. 4 Ziffern in Folge enthält. Nicht mehr. Zwei bedingt übrigens eins.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Das hätte ja auch zum Nachdenken anregen können. Was Du momentan[1] tust, ist überprüfen ob zwei Ziffern oder vier Ziffern in Folge im String enthalten sind. Das kann natürlich nicht das sein was du willst, denn wenn 4 Ziffern enthalten sind, sind natürlich auch zwei Ziffern enthalten.



                [1]
                PHP-Code:
                preg_match("/[0-9]{2}|[0-9]{4}/",$_POST['abgs']); 
                Edit: Ninja'd
                @fschmengler - @fschmengler - @schmengler
                PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                Kommentar


                • #9
                  Geht übrigens auch wunderbar ohne RegEx, wenn dir das zu kompliziert ist:

                  [man]ctype_digit[/man]
                  [man]strlen[/man]
                  @fschmengler - @fschmengler - @schmengler
                  PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                  Kommentar


                  • #10
                    [QUOTE=fab;540106]Das hätte ja auch zum Nachdenken anregen können. Was Du momentan[1] tust, ist überprüfen ob zwei Ziffern oder vier Ziffern in Folge im String enthalten sind. Das kann natürlich nicht das sein was du willst, denn wenn 4 Ziffern enthalten sind, sind natürlich auch zwei Ziffern enthalten.

                    Doch, das ist genau das was ich erreichen will.

                    erlaubt: 12 oder 1234
                    nicht erlaubt: 1, 123, 12345

                    Kommentar


                    • #11
                      Code:
                      /[0-9]{2}/
                      matcht aber auch bei 123 und bei 45abc.
                      http://hallophp.de

                      Kommentar


                      • #12
                        Na dann musst du für den zwei-Ziffern-Ausdruck explizit verlangen, dass davor und dahinter etwas steht, das keine Ziffer ist. (Und für den vierer natürlich ebenso, wenn fünf Ziffern auch kein Treffer sein sollen.)

                        Kommentar


                        • #13
                          Doch, das ist genau das was ich erreichen will.
                          NEIN. Ist es NICHT!
                          im String enthalten sind
                          Enthalten! Nun überleg mal, wo der Unterschied ist.

                          @ChrisB: Auch das ist nicht hinreichend für die Bedingung „natürliche Zahl“. Alleine zu prüfen, ob ein String Ziffern enthält, reicht nicht aus.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Zitat von Asipak Beitrag anzeigen
                            Code:
                            /[0-9]{2}/
                            matcht aber auch bei 123 und bei 45abc.
                            kann ich nicht nachvollziehen, 123

                            Kommentar


                            • #15
                              regex online tester - regular expressions

                              Wie oft sollen wir es denn noch wiederholen?
                              Enthalten!
                              http://hallophp.de

                              Kommentar

                              Lädt...
                              X