Hallo,
ich habe folgenden Test-String, auf den ich ein bedingtes "Suchen und Ersetzen" mittels RegExp anwenden möchte:
Der Test-String "wert" lautet:
wert = "Haus mit Garage, Villa mit Pool, Laube mit Fenster, aber immer mit Strom";
Suchen mit Bedingung:
Suche in "wert" nach dem Wort "mit", dem eines der Wörter Haus, Villa, Laube (gefolgt von einem Leerzeichen) vorausgeht.
Ersetzen:
Ersetze in diesem Fall das Wort "mit" durch das Wort "ohne".
Ergebnis soll sein:
"Haus ohne Garage, Villa ohne Pool, Laube ohne Fenster, aber immer mit Strom"
Das letzte "mit" im Test-String soll also nicht ersetzt werden, weil hier die Bedingung nicht erfüllt ist, d.h. keines der Wörter "Haus", "Villa" oder "Laube" vorausgeht.
------------------------------------------------------------------------------------------------------------------------------------------------
Das ist wohl das Problem, das man mit einem "Positiven Lookbehind" angehen würde, den es in Javascript aber nicht zu geben scheint.
Ich habe das bisher so gelöst, würde mich aber nicht wundern, wenn das nicht auch schlanker ginge:
wert = "Haus mit Garage, Villa mit Pool, Laube mit Fenster, aber immer mit Strom";
reg = /\bHaus mit\b|\bVilla mit\b|\bLaube mit\b/;
while (reg.test(wert))
{
wert = wert.replace(/\bHaus mit\b/,'Haus ohne');
wert = wert.replace(/\bVilla mit\b/,'Villa ohne');
wert = wert.replace(/\bLaube mit\b/,'Laube ohne');
}
Wer hat einen Tipp ?
Mfg Nick