RegExp
Hartmut
- javascript
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
ersetze b durch
[ \s.,!?;:-]
ersetze b durch
[ \s.,!?;:-]
Hallo Gerhard!
Auf Linux funzt das sogar, aber die meisten haben Windows, und das meldet "unknown javascript-error".
MfG
Hartmut
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
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