dynamische RegExp
Michael
- javascript
Hallo,
ist es möglich, mit JS folgenden Perl-Code zu simulieren:
$regexpr="huhu" <-- dynamischer Wert!
if($suchstring =~/$regexpr/)
{....usw...}
?
Meine Versuche mit
var regexpr="/huhu/";
if(SuchString.search(regexpr)!=-1)
{ ... usw
will der liebe browser nicht ;-)
Kennt wer eine Lösung?
Danke
Mischa
Meine Versuche mit
var regexpr="/huhu/";
if(SuchString.search(regexpr)!=-1)
will der liebe browser nicht ;-)
In <../../tecj.htm#a3> sieht die Syntax auch irgendwie anders ganz aus ... allerdings weiß ich nicht, ob man in dem dortigen Beispiel statt der Konstante "au" auch eine Variable hätte angeben können ...
Hallo Micha,
$regexpr="huhu" <-- dynamischer Wert!
if($suchstring =~/$regexpr/)
{....usw...}
?Meine Versuche mit
var regexpr="/huhu/"; <-- Fehler
Der Browser sucht jetzt nach "huhu". Du mußt den Aufruf so bilden:
var regexpr="/"+huhu+"/";
natürlich unter der Voraussetzung, "huhu" wurde auch als Variable definiert.
Viele huhu-Grüße
Antje :-)))
Hi Mischa!
Meine Versuche mit
var regexpr="/huhu/";
if(SuchString.search(regexpr)!=-1)
{ ... usw
Damit wuerdest Du ja nach der Zeichenkette "/huhu/" suchen, Du willst ja aber nur nach dem RegExp /huhu/ suchen (der letztlich auch nur die Zeichenkette "huhu" darstellt).
Also wenn Du nur nach einfach Zeichenketten suchen willst, duerfte
var s = "huhu";
if (suchstring.search(s) > -1) ...
ausreichen.
Wenn Du aber nach komplexeren Ausdruecken wie /\d+huhu/g suchen willst, geht das in dieser Art wohl nicht mehr. Weiss ich aber nicht, weil ich mit RegExp in JS alles andere als fit bin. Folgende Varianten biete ich Dir mal zum Ausprobieren an:
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) ...
Waere schoen, wenn Du du mal alle Varianten ausprobieren koenntest und die Ergebnisse hier postest, wenn moeglich vielleicht sogar mit verschiedenen Browsern. Ich denke naemlich, diese Frage ist guter Stoff fuer die Forumsauslese.
Calocybe
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