Can: Reguläre Ausdrücke - Mit String vergleichen

Hallo,

ich habe ein Input Feld und wenn ich da was eintipppe, möchte ich, dass Vorschläge aus einem Array, mit verschieneden Namen als Inhalt, angezeigt werden.

Dafür brauche ich reguläre Ausdrücke.

Meines sieht so aus:

  
function vergleichen(string){  
var regex = new RegExp("^"+string+".", "i");  
for(var i=0; i<arr.length; i++){  
  if(regex.test(arr[i])){  
    console.log("treffer: "+arr[i]);  
  }  
}  
}  

Wenn ich zum Beispiel "Muster" als Wert in einer position des Arrays
gespeichert habe, kriege ich "Muster" immer noch als Vorschlag, obwohl
ich im InputFeld bereits "Musterr" stehen habe(also mit 2 "r")...
Was ist falsch an dem regex?

Danke.

  1. Hi,

    ich habe ein Input Feld und wenn ich da was eintipppe, ...

    hopppla! ;-)

    Dafür brauche ich reguläre Ausdrücke.

    Das glaube ich nicht. Einfache Stringvergleiche sollte eigentlich genügen.

    function vergleichen(string){

    var regex = new RegExp("^"+string+".", "i");
    for(var i=0; i<arr.length; i++){
      if(regex.test(arr[i])){
        console.log("treffer: "+arr[i]);
      }
    }
    }

    
    >   
    > Wenn ich zum Beispiel "Muster" als Wert in einer position des Arrays gespeichert habe, kriege ich "Muster" immer noch als Vorschlag, obwohl ich im InputFeld bereits "Musterr" stehen habe(also mit 2 "r")...  
      
    Natürlich, denn "Muster" passt ja noch auf den Anfang des Strings "Musterr". Du hast zwar dein Pattern am Anfang des Suchstrings verankert (^), aber nicht am Ende ($).  
      
    Ich bin trotzdem der Ansicht, dass ein gewöhnlicher Stringvergleich anstelle eines RegEx hier sinnvoller wäre. Wenn du ohne Berücksichtung von Groß/Kleinschreibung vergleichen willst, hilft dir die Anwendung von [toLowerCase()](http://de.selfhtml.org/javascript/objekte/string.htm#to_lower_case) (oder toUpperCase()) auf beiden Seiten des Vergleichsoperators.  
      
    
    > Was ist falsch an dem regex?  
      
    Eine so komplexe Sache überhaupt für eine derart simple Aufgabe zu verwenden?  
      
    Ciao,  
     Martin  
    
    -- 
    You say, it cannot be love if it isn't for ever.  
    But let me tell you: Sometimes, a single scene can be more to remember than the whole play.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Was ist falsch an dem regex?

      Eine so komplexe Sache überhaupt für eine derart simple Aufgabe zu verwenden?

      Ciao,
      Martin

      Ja aber ich wollte ja, dass Vorschläge angezeigt werden, sobald man beginnt, zu tippen.

      1. Hallo,

        Was ist falsch an dem regex?
        Eine so komplexe Sache überhaupt für eine derart simple Aufgabe zu verwenden?
        Ja aber ich wollte ja, dass Vorschläge angezeigt werden, sobald man beginnt, zu tippen.

        und was hat das mit der Entscheidung zu tun, Stringoperationen anstatt RegEx zu verwenden? - Zumal ich dich ja auch auf deinen Fehler im RegEx hingewiesen habe, falls du doch unbedingt bei der Methode bleiben möchtest.

        Ciao,
         Martin

        --
        Success should be measured not so much by the position that one has reached in life,
        but by the obstacles one has overcome while trying to succeed.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hallo,

          Was ist falsch an dem regex?
          Eine so komplexe Sache überhaupt für eine derart simple Aufgabe zu verwenden?
          Ja aber ich wollte ja, dass Vorschläge angezeigt werden, sobald man beginnt, zu tippen.

          und was hat das mit der Entscheidung zu tun, Stringoperationen anstatt RegEx zu verwenden? - Zumal ich dich ja auch auf deinen Fehler im RegEx hingewiesen habe, falls du doch unbedingt bei der Methode bleiben möchtest.

          Ciao,
          Martin

          Wenn im Input Feld "Mu" eingetippt worden ist, sollen als Vorschläge: "Muster" und "Munze" erscheinen. Mit Stringoperatoren käme eigentlich doch nur indexOf in Frage. Oder meinst du einen anderen Ansatz?

          1. Hi,

            Wenn im Input Feld "Mu" eingetippt worden ist, sollen als Vorschläge: "Muster" und "Munze" erscheinen. Mit Stringoperatoren käme eigentlich doch nur indexOf in Frage.

            Ja. Und?

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?