Hartmut: RegExp

Hallo Forumer!

Folgende Zeilen verbinden ein in einer Variable gespeichertes Wort mit einem regulären Ausdruck und speichern das ganze in einer neuen Variable:

var Suchwort = 'Test';
var Reg = eval("/" + Suchwort + "/i");

Nun möchte ich damit einen Satz durchsuchen, in diesem Fall, wegen dem "i", unabhängig von Gross/Kleinschreibung:

<script language="JavaScript">
<!--

var Suchwort = 'test';
  var Reg = eval("/" + Suchwort + "/i");
  var satz = 'Dies ist ein Test.';
  var suchen = satz.search(Reg);
  alert(suchen);

//-->
</script>

Das klappt auch. Ebenfalls, wenn das "i" durch ein "g" ausgetauscht wird.
Ich möchte jetzt aber "Test" als einzelnes Wort finden, mit "\b":

<script language="JavaScript">
<!--

var Suchwort = 'Test';
  var Reg = eval("/\b" + Suchwort + "\b/");
  var satz = 'Dies ist ein Testing im Test.';
  var suchen = satz.search(Reg);
  alert(suchen);

//-->
</script>

Und das klappt nicht. Weiss jemand, wie es geht?

Dank im voraus
Hartmut

  1. ersetze b durch

    [ \s.,!?;:-]

    1. ersetze b durch

      [ \s.,!?;:-]

      Hallo Gerhard!

      Auf Linux funzt das sogar, aber die meisten haben Windows, und das meldet "unknown javascript-error".

      MfG
      Hartmut

  2. Hi Hartmut!

    var Suchwort = 'Test';
    var Reg = eval("/" + Suchwort + "/i");

    Alternative: var Reg = new RegExp(Suchwort, "i");
    (http://developer.netscape.com/docs/manuals/js/client/jsref/regexp.htm)

    var Reg = eval("/\b" + Suchwort + "\b/");

    Du schreibst hier in einem String \b. Ein \ im String hat aber ne Sonderbedeutung, die das darauffolgende Zeichen spezifiziert. So kann man z.B. mit \n einen Zeilenumbruch in den String einfuegen ("Eine Zeile\nNaechste Zeile). \b steht fuer ein Backspace ([link:http://developer.netscape.com/docs/manuals/js/client/jsguide/ident.htm#1008368).

    Du musst daher den Backslash escapen, damit er an das eval() uebergeben wird. Das geschieht mit einem weiteren Backslash.

    var Reg = eval("/\b" + Suchwort + "\b/");
    sollte funktionieren.

    Calocybe

    1. Du musst daher den Backslash escapen, damit er an das eval() uebergeben wird. Das geschieht mit einem weiteren Backslash.

      var Reg = eval("/\b" + Suchwort + "\b/");
      sollte funktionieren.

      Hi Calocybe!

      Es funktioniert!! :-))
      Unglaublich, dass darauf jemand eine Antwort weiss. Das hilft mir jetzt weiter.

      Besten Dank nochmal
      Hartmut