walker: was macht +$

hi!

eine fragen zu perl:
ich hab einen filter gebastelt  <- ja ich habs aus dem forumsarchive zusammengeklaut, nur kleinbuchstaben/zahlen im name, funktioniert soweit auch.

ich moechte das ganze aber auch verstehn wobei mir unklar is wozu ich
+$ benoetige, es laeuft mit und ohne +$

if($NameB !~ /[1]+$/){error();}
else{
.

badname_abfragen

if badname -> error
else -> success

badname_abfragen

.
}

ew<<


  1. a-z0-9\s ↩︎

  1. Hallo

    http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten.

    gruss

    --
    no strict;
    no warnings;
    79.78 cups of Coffee (Brewed) + Me = Death
    Kalorien sind winzig kleine nachtaktive Tiere, die unbeobachtet menschliche Kleidung enger nähen.
    1. hi!

      danke, versteh das aber nicht, was solls, ....

      wie kann ich ein leerzeichen ganz ausschliessen? der code erlaubt ja ein leerzeichen, bzw mehrere leerzeichen werden zu einem zusammengefasst

      if($NameB !~ /[1]+$/)

      \s = leerzeichen

      ew<<


      1. a-z0-9\s ↩︎

      1. Tag walker.

        if($NameB !~ /[1]+$/)
        \s = leerzeichen

        Nein, innerhalb von Zeichenklassen hat nur das "-" eine besondere Bedeutung, alles andere wird so behandelt, wie es da steht. Das bedeutet, dass du auch den Backslash erlaubst. Das "+" am Ende bedeutet, dass die Zeichen der Zeichenklasse mindestens 1mal und beliebig oft vorkommen müssen, das "^" am Anfang und das "$" am Ende bedeuten, dass die Regel für den gesamten String gelten muss. Dein RegExp könnte also so aussehen:

        /[2]+$/

        Das fängt dir allerdings auch Zeilen ein, die ausschließlich aus Leerzeichen bestehen. Sollte das nicht gewünscht sein, müsste der RegExp dann so aussehen:

        /^([a-z0-9]|\s(?!\s))+$/

        Siechfred


        1. a-z0-9\s ↩︎

        2. a-z0-9 ↩︎

        1. hi Siechfred!

          danke fuer die ausfuehrliche erklaerung, werd mir das copieren, vielleicht funktioniert meine letzterkenntniss weil die formular_eingabe nur
          "eine zeile mit max 20 buchstaben"
          is.
          hab aber dein beispiel eingefuegt, klappt wunderbar, kann nur mehr buchstaben und zahlen eintragen ohne leer oder sonderzeichen, so sollts sein :)

          auf deutsch wuerde der befehl wohl heissen
          wenn NameB nicht aus ein oder vielen kleinbuchstaben und zahlen besteht - > fehler

          ew<<

      2. hi!

        A_ha nach herumprobieren kann ich das leerzeichen ganz einfach unterbinden und jetzt glaube ich auch das "+$" zu verstehn

        if($NameB !~ /[1]+$/)
        ergibt keine leerzeichen, wenn ich das +$ am ende weglass, erlaube ich leerzeichen

        *hirn_raucht*

        ew<<


        1. a-z0-9 ↩︎

        1. Tag walker.

          if($NameB !~ /[1]+$/)
          ergibt keine leerzeichen, wenn ich das +$ am ende weglass, erlaube ich leerzeichen

          Nein, nicht nur Leerzeichen, sondern jedes beliebige Zeichen. Beispiel:

          Muster: /[2]/
          Matcht: 'a$ %&' oder auch '0 ' oder auch 'b2', aber nicht '%a' oder ' a'

          Siechfred


          1. a-z0-9 ↩︎

          2. a-z0-9 ↩︎

      3. Hi walker,

        danke, versteh das aber nicht, was solls, ....

        In deinem Ausdruck werden nach sämtlichen Zeichen zwischen [ und ]
        gesucht und !~ sorgt dafür dass eben nur diese vorkommen dürfen.
        In deinem Fall ' ' (Leerzeichen), kleine Buchstaben, Ziffern, und...

        \s = leerzeichen

        \s = Alle Whitespace-Character (je nach Systemkonfiguration), also
        Space, Tab, \n, \r z.B.

        Willst du kein Leerzeichen, nimm es einfach aus der Expression:

        if($NameB !~ /[1]+$/)

        Übrigens, ohne +$ wird nur das erste Zeichen überprüft.
        ^ = Anfang des Ausdrucks
        $ = Ende

        Schau dir den Link von Eternius am besten nochmal an.

        Gruß,

        Lin

        --
        Mister rabbit says, "A moment of realization is worth a thousand prayers."

        1. a-z0-9 ↩︎

        1. hi Lin!

          danke.

          ew<<