Antje Hofmann: dynamische RegExp

Beitrag lesen

1.  var regexp = /\d+huhu/;
    if (suchstring.search(regexp) > -1) ...
2.  var regexp = '/\d+huhu/';
    if (suchstring.search(eval(regexp)) > -1) ...
3.  var regexp = '/\d+huhu/';
    if (eval("suchstring.search(" + regexp + ")") > -1) ...

Calocybe

Hallo Calocybe, hallo Michael

ich habe es  mittlerweile raus, wie es geht. Auch komplexe Suchausdrücke sind möglich.

Generell sollte man z.B. so verfahren:

<script language="JavaScript">
<!--
text="Schönes Wetter huhu heute nett ";
huhu="et";
var regexp ="/"+huhu+"+/";

if (text.search(eval(regexp))>-1)alert("richtig");else alert("false");
//-->
</script>

die Variablenzuweisung erfolgt nach dem gewohnten Verfahren über Stringaddition. Komplexere Ausdrücke wie oben müssen zusatzlich mittels eval umgewandelt werden.

Aufpassen muß man bei Ausdrücken der Form
/\B usw. hier muß der \ zusätzlich maskiert werden.

Also so z.B.

<script language="JavaScript">
<!--
text="Schönes Wetter huhu heute nett ";
huhu="/\bnett\b/";
var regexp =huhu;

if (text.search(eval(regexp))>-1)alert("richtig");else alert("false");

//-->
</script>

Viele Grüße

Antje