jonny_w: match(/var/);

hallo, ich versucht in einem text nach einem wort+\n zu suchen .. das ist soweit auch kein problem, wo ich nicht weiter komme ist wenn das suchwort in einer variable steht und diese variable auch noch eine array ist.

var str[3][8] = "#bla";

text.match(/#bla\n/);
das funktioniert ...

text.match(/str[3][8]\n/);
das funktioniert nicht, ich auch klar das es nicht geht, die frage ist aber wie kann ich es hinbekommen das es geht?

  1. Lieber jonny_w,

    text.match(/str[3][8]\n/);
    das funktioniert nicht, ich auch klar das es nicht geht, die frage ist aber wie kann ich es hinbekommen das es geht?

    was Du brauchst ist ein neues RegExp-Objekt. Alles was Du ohne Anführungszeichen als /irgendwas/ notierst, wird als ein solches Objekt verstanden. Wenn Du nun dynamisch Variableninhalte zu regulären Ausdrücken "umformen" möchtest, dann benötigst Du neue solche Objekte.

    Beispiel:

    myArray = ["eins", "zwei", "drei"];  
      
    for (var i = 0; i < myArray.length; i++) {  
       myRegExp = new RegExp(myArray[i], "gi");  
       alert("Teste " + myArray[i] + " mit diesem Ausdruck: " + myRegExp);  
       // dieser Test matched natürlich immer...  
       if (myArray[i].match(myRegExp) alert ("Es matched!");  
       // ... aber zum Verdeutlichen sollte es reichen.  
    }
    

    Nocheinmal abstrakter:
    Mit "new RegExp(string-Muster, string-Modifier)" erzeugst Du ein neues RegExp-Objekt. In "string-Muster" steht Dein Suchausdruck _ohne_ umschließende Slashes! In "string-Modifier" stehen so Sachen wie "i" für CaseInsensitive, "g" für Greedy oder "m" für MultiLineMode.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.