molily: RegExp

Beitrag lesen

Hallo,

Du machst den Fehler, den RegEx als Variable einbauen zu wollen, was IMHO die search-Funktion nicht hergibt.

str.search(/schatten/)

var re = new RegExp('(schatten)|(echo)');
if(re.test(str)) {

Vielleicht zur Erklärung: Die search-Methide hat nichts damit zu tun, wie das RegExp-Objekt erzeugt wird. »/.../« ist nichts anderes als die Kurzschreibweise (»Literal«) für »new RegExp(...)«. Diese Varianten sind in nahezu allen Kontexten austauschbar (eventuell sind zusätzliche Klammern nötig).

str.search(new RegExp("schatten")) wäre formal korrekt.
Dasselbe gilt für entsprechend für
var re = new RegExp("schatten");
str.search(re);

Dementsprechend kann man in beiden Fällen Variablen in den regulären Ausdruck einbauen, egal, ob der Ausdruck letztlich zusammen mit match(), replace(), search() von String-Objekten oder exec() oder test() des selbigen RegExp-Objekts verwendet wird.

Das ist alles möglich:

var string = "blafaselfoobar";
var gesuchteswort = "foo";
var regausdruck = new RegExp(gesuchteswort);
var ergebnisse = regausdruck.exec(string);
var ergebnis = regausdruck.test(string);
var treffer = string.match(regausdruck);
var trefferposition = string.search(regausdruck);
var string2 = string.replace(regausdruck, "bar");

Wahrscheinlich sage ich dir nichts Neues, aber der obige Satz klang etwas missverständlich.

Mathias