Regulärer Ausdruck bei optionaler PLZ

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

  • Regulärer Ausdruck bei optionaler PLZ

    Ich habe ein kniffliges Problem:

    Es geht um die Validierung einer PLZ. Die PLZ soll mit einem regulären Ausdruck (PCRE) geprüft werden. Der Ausdruck soll wahr sein, wenn:

    1. Der Benutzer das Textfeld komplett leer lässt (NULL)
    ODER
    2. Der Benutzer eine gültige PLZ eingibt (bestehend aus der esten Ziffer zwischen 1-9 und vier weiteren zwischen 0-9).

    Zweiteres habe ich schon /[1-9][0-9]{4}/
    Wie kommt 1. hinzu?

    Vielen Dank für eure Tipps!

  • #2
    http://pcre.nophia.de/explain/quanti...x.php#question

    aber - sollen es deutsche postleitzahlen sein? warum schließt du dann sachsen aus? oder ist es gewollt?
    Zuletzt geändert von penizillin; 17.03.2006, 17:05.

    Kommentar


    • #3
      /([0-9]{5})?/

      Bei dieser Variante wird aber auch z.B. der Wert 0 wahr

      Sachsen auszuschließen war irgendwie quatsch :-D
      Zuletzt geändert von litorster; 17.03.2006, 17:08.

      Kommentar


      • #4
        warum so kompliziert? prüfe doch einfach, ob das feld nicht leer ist. wenn dem so sein sollte, prüfst du auf valide plz.

        wenn es wirklich deutsche plz sind, kannst du übrigens einfach \d{5} verwenden.

        edit: hehe
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Wie kommt 1. hinzu?
          Wieso hinzu ? Prüf doch einfach schon das Textfeld beim Erhalt des Fomulars und wenn leer dann gar ned prüfen...
          PHP-Code:
          $string '12345';
          if(
          preg_match('/^\\d{5}$/',trim($string)) === 0){
              die(
          'Diese Postleitzahl ist nicht gültig');

          Gruss

          tobi

          EDIT:

          Ich als unwissender Schweizer wollte die Sachsen natürlich aus nicht ausschliessen

          Zuletzt geändert von jahlives; 17.03.2006, 17:14.
          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


          • #6
            Original geschrieben von derHund
            warum so kompliziert? prüfe doch einfach, ob das feld nicht leer ist. wenn dem so sein sollte, prüfst du auf valide plz.
            Das ganze ist eine Validierungfunktion, die über einen Array läuft. Jeder Schlüssel wird anders geprüft. Der Einsatz von empty,isset oder if($var) ist nicht erwünscht.

            Kommentar


            • #7
              Der Einsatz von empty,isset oder if($var) ist nicht erwünscht.
              Notice ahoi
              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


              • #8
                Ich hab überhaupt keine Ahnung ob das geht (und bin im Moment auch zu faul es zu testen ), aber probier doch mal

                Code:
                ((\d{5})|(^$))

                Kommentar


                • #9
                  @Luke
                  Dein Code funzt. Habs mal schnell getestet.

                  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


                  • #10
                    Original geschrieben von jahlives
                    Wieso hinzu ? Prüf doch einfach schon das Textfeld beim Erhalt des Fomulars und wenn leer dann gar ned prüfen...
                    PHP-Code:
                    $string '12345';
                    if(
                    preg_match('/^\\d{5}$/',trim($string)) === 0){
                        die(
                    'Diese Postleitzahl ist nicht gültig');

                    Bei einem leeren String löst deine Anweisung den IF-Part aus. Bei mir soll er aber ein leerer String (oder eine gültige PLZ) akzeptiert werden.

                    Ich formulieren vielleicht nochmals was im Endeffekt meine Frage ist:
                    Gibt es keinen Ausdruck für einen leeren Wert (einen leeren String)?
                    Wenn es keinen Ausdruck dafür gibt werde ich eine Ausnahme schreiben müssen...

                    Trotzdem vielen Dank euch allen für eure Ideen!
                    Zuletzt geändert von litorster; 17.03.2006, 18:36.

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      @Luke
                      Dein Code funzt. Habs mal schnell getestet.

                      Gruss

                      tobi
                      Hups das widerspricht sich jetzt. Ich teste nochmal...

                      Kommentar


                      • #12
                        Hey Luke,
                        dein Vorschlag funktioniert! Vielen Dank!
                        Habe wohl beim ersten Testen irgendeinen Mist gemacht...

                        Kommentar


                        • #13
                          Bei einem leeren String löst deine Anweisung den IF-Part aus. Bei mir soll er aber ein leerer String (oder eine gültige PLZ) akzeptiert werden.
                          Ich hatte gedacht, dass du die if Prüfung nach dem leeren String selbst hinkriegen würdest.
                          Also dann
                          PHP-Code:
                          if(!isset($_POST['name_des_feldes'])){
                              
                          //leeres Feld
                          }elseif(preg_match('/^\\d{5}$/',trim($_POST['name_des_feldes'])) === 0){
                              die(
                          'Diese Postleitzahl ist nicht gültig');

                          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


                          • #14
                            Original geschrieben von jahlives
                            Ich hatte gedacht, dass du die if Prüfung nach dem leeren String selbst hinkriegen würdest.
                            Sorry, aber ich wollte keine Abbruchbedingungen schreiben mit isset, empty o.ä. siehe oben. Trotzdem danke! Die Lösung hat sich ja gefunden...

                            Kommentar

                            Lädt...
                            X