JavaScript erstellt programmgesteuert Regex

8

Ich weiß, dass ich ein Javascript so ersetzen kann:

str = str.replace(/mytarget/g, 'some value');

ersetzt alle Vorkommen des Literals mytarget . Ich habe jedoch ein großes Array von Wörtern / Phrasen, die ich in regex replace verwenden möchte, und da regexps nur Sprachelemente sind (sie werden bei der Deklaration nicht in einen String eingeschlossen), kann ich keine Möglichkeit finden, regexps programmgesteuert zu deklarieren es sei denn, ich kodiere sie fest. Also wenn ich:

var arr=['word', 'another', 'hello'];

Ich möchte produzieren:

str = str.replace(/word/g, 'some value');

str = str.replace(/another/g, 'some value');

str = str.replace(/hello/g, 'some value');

Bitte posten Sie ein Beispiel, dass ich regexps verwenden kann, da ich mehr Ausdrücke in die regulären Ausdrücke wie Whitespace usw. einfügen werde, also brauche ich es auf die Art und Weise wie es regexp ist. Schließlich, bitte bieten Sie nicht mit eval , ich bin mir sicher, dass es einen besseren Weg gibt.

    
Can Poyrazoğlu 10.10.2011, 18:51
quelle

4 Antworten

13

Sie müssen die RegExp-Konstruktorfunktion dafür aufrufen. Beispiel:

%Vor%

Das erste Argument für den Konstruktor ist eine Zeichenkette, die buchstäblich alles übernimmt, was Sie zwischen // einfügen würden. Der zweite Parameter ist ebenfalls eine Zeichenfolge, in der Sie Modifikatoren wie g , i usw. übergeben können.

    
jAndy 10.10.2011, 18:55
quelle
3

Sie können eine RegEx dynamisch so erstellen -

%Vor%

Denken Sie daran, dass Sie alle \ -Zeichen mit \

umgehen müssen     
ipr101 10.10.2011 18:55
quelle
2
%Vor%     
Leo 10.10.2011 18:58
quelle
0

Wenn Sie das reg-exp im laufenden Betrieb generieren, können Sie das RegExp-Objekt verwenden

%Vor%     
Malvolio 10.10.2011 18:54
quelle

Tags und Links