• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

replace() findet Ausdruck nicht

Betty79

New member
Hallo und guten Abend,

ich habe ein Problem mit der replace()-Funktion. Habe schon sämtliches ausprobiert, aber stehe jetzt am Ende meiner Ideen woran es liegen könnte.
Innerhalb einer Rechenaufgabe soll der Teil 547*68 (Zahlen variabel) gesucht werden. replace findet diesen Ausdruck aber nicht. Liegt es am Zeichen "*"
547 wird gefunden, 547* wird gefunden, das einzelne Zeichen "*" wird gefunden, aber nicht der komplette Ausdruck. Ein regExp()-reserviertes Zeichen ist es auch nicht, sodass ich es escapen müsste. Was ist aber dann der Grund?

In inputString steht: 48+547*68-73+61*9
in subS steht: 547*68

folgendes führe ich anschließend aus:

Code:
var re = new RegExp(subS,"g");
resultString = this.inputStr.replace(re, result);

Ich hoffe, dass mir jemand helfen kann, bzw. den Grund für dieses Verhalten nennen kann. Ich hätte durchaus alternative Lösungen, die allerdings viel umständlicher wären. Außerdem möchte ich verstehen, warum der Ausdruck nicht gefunden wird.

LG Betty
 
Es gibt eine praktische Funktion, die das Escapen für einen übernimmt, die ich bei Stackoverflow gefunden habe. regex - How to escape regular expression in javascript? - Stack Overflow
Das folgende Codebeispiel funktonierte bei mir.
Code:
RegExp.escape = function(str) {
  return String(str).replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
};
var inputString="48+547*68-73+61*9",re="547*68",result="ABCDEFG";
resultString=inputString.replace(new RegExp(RegExp.escape(re),"g"),result);

"*" ist übrigens ein Regex-Reserviertes Zeichen. Die Bedeutung findest du unter Regular Expressions :: Eloquent JavaScript , "Repeating parts of a pattern".
 
[GELÖST] replace() findet Ausdruck nicht

Es funktioniert, ich bedanke mich recht herzlich!!! Mit der Zeichenreservierung hast du Recht, das hab ich dann wohl irgendwie überlesen, wobei dies ja auch mein erster Gedanke war.
Auch eine schöne function zum escapen. Danke auch dafür.

LG Betty
 
Zurück
Oben