RegExp-Abfrage in Variable

TIMS_Ralf

Erfahrenes Mitglied
Hallo,
wie kann ich eine RegExp-Abfrage ( zB .test() ) in eine Variable setzen (zB für ne Schleife...)?
Javascript:
// Abfrage ohne Variable
if(/Anfrage/g.test(blablabla))
{}

// Abfrage mit Variable:
var inhalt = new RegExp("/Anfrage/g");
if(inhalt.test(blablabla)
{}

Danke vorab,
Ralf
 
Hi,

wenn ich dein Problem richtig verstanden habe, bist du auf dem richtigen Weg. RegExp erwartet jedoch im ersten Argument lediglich einen String, im zweiten Argument weitere Flags.
Javascript:
var inhalt = new RegExp("Anfrage", "g");

Ciao
Quaese
 
Hi... Du schon wieder... :)

Ja, dachte / hoffte es könnte alles in einen String um mehrere Abfragen "komma-getrennt" hintereinander legen zu können und durchlaufen zu lassen... Dann müssen es wohl mehrere "new RegExp" werden.

Kann ich mehrere Modifiers ( g + i ) hintereinander abfragen - gedacht etwa so:
Javascript:
inhalt = new RegExp("Anfrage", "g,i");
inhalt = new RegExp("Anfrage", "g", "i");

Guten Rutsch und alles Gute für´s Neue!
Ralf
 
Hallo Crack,
... auch Dir danke - und sorry for delay... war in Urlaub :)

Ja, kann eine RegEx auch "ganz trivial" in eine Variable packen, wie Du schriebst. Mein zugrunde liegendes Problem war die Aneinanderreihung mehrerer Abfrage, und diese zusammen mit beliebig vielen Modifiers versehen zu können. Dabei hab ich mich irgendwann vergaloppiert: Wollte die einzelnen Ausdrücke in ein Array packen und selektiv durchlaufen = den gesamen Ausdruck in einem Script dynamisch erstellen und dann abfragen lassen ...

Habs nun statisch wie folgt gelöst (Beispiel / Auszug):
Javascript:
var
_Browser=window.navigator.userAgent,
_browser=window.navigator.userAgent.toLowerCase(),

_itsWinPhone = /windows\sce|windows phone|windowsphone|iemobile|xblwp7; zunewp7|touch; wpdesktop|touch; nokia; lumia/i.test(_browser),  // Windows Phone
// oder eben
_itsWinPhone = new RegExp(/windows\sce|windows phone|windowsphone|iemobile|xblwp7; zunewp7|touch; wpdesktop|touch; nokia; lumia/i.test(_browser))
// etc. ...

if(_itsWinPhone )
{ ... }

// analog mit anderen, auch mehreren Modifieres, wie ComFreak, Quaese schrieb (z.B. new RegExp("Anfrage", "gi")

Danke Euch, Grüße
Ralf
 
Zuletzt bearbeitet:
Dein zweiter Ausdruck dürfte nicht funktionieren, da Du ein neues RegExp-Objekt erstellst, allerdings als Argument bereits einen regulären Ausdruck übergibst. Insofern musst Du zwei Sachen ändern: einerseits müsste es eine Zeichenkette sein, andererseits musst Du die Methode "test" auf das von Dir gewünschte RegExp-Objekt anwenden und nicht auf jenes, welches Du als Argument übergibst:
Javascript:
// falsch:
_itsWinPhone = new RegExp(/windows\sce|windows phone|windowsphone|iemobile|xblwp7; zunewp7|touch; wpdesktop|touch; nokia; lumia/i.test(_browser));

// richtig:
_itsWinPhone = ( new RegExp( "windows\sce|windows phone|windowsphone|iemobile|xblwp7; zunewp7|touch; wpdesktop|touch; nokia; lumia", "i" ) ).test( _browser );
 
Hallo Crack, und erneut danke!
Damit erklärt sich, weshalb ich dann auf die erste Variante "var = Ausdruck" ausgewichen bin.

Den Fehler der zweiten Variante hat mir weder mein JS-Editor (1st JS-Editor) noch einer der Browser-Debugger (Firebug/FF, IE, Chrome...) korrekt gemeldet, aber so richtig funktioniert hat es auch nicht - die Rückgabe ergab weder true noch false. Da stehste dann maa voll aufm Schlauch - und weichst aus.

So läufts nun auch mit neuem RegExp-Objekt - wäre ich nicht drauf gekommen!
Thanks, Ralf
 
Es ist verständlich, dass Dir die Debugger nichts gesagt haben, denn syntaktisch und nach der Definition der Klassen hat alles gestimmt. Logische Fehler erkennen die wenigstens Debugger ;)
 

Neue Beiträge

Zurück