Javascript: String.match () - Übergeben String-Variable in regulären Ausdruck [duplizieren]

8

Ich habe versucht, die Methode (Teil des Tutorials auf w3schools) neu zu schreiben.

>

Das Problem besteht darin, eine variable Zeichenfolge so zu machen, dass sie Teil des regulären Ausdrucks wird.

Tutorial Beispielcode:

%Vor%

Ich habe es versucht:

%Vor%

Die Art, wie ich es versucht habe, hat nicht funktioniert.

    
Mohitt 25.06.2015, 06:43
quelle

5 Antworten

11

Verwenden Sie den Regex-Konstruktor wie:

%Vor%     
CD.. 25.06.2015, 06:48
quelle
7

Sie müssen RegExp constructor verwenden, wenn Sie einen Wert der Variablen als Regex übergeben möchten.

%Vor%

Wenn Ihre Variable spezielle Zeichen enthält, ist es besser, diese zu umgehen.

%Vor%     
Avinash Raj 25.06.2015 06:48
quelle
5

Ja match() funktioniert nicht mit String-Literalen

Sie können var re = new RegExp(test,"gi");

verwenden %Vor%     
squiroid 25.06.2015 06:49
quelle
5

Sie hätten nach "dynamischen regulären Ausdrücken" suchen können, und Sie hätten gefunden: Javascript Regexp dynamische Generierung von Variablen? oder Dynamische (variable) Zeichenfolge als Regex-Muster in JavaScript verwenden die beide sehr gut beschreiben.

    
eX0du5 25.06.2015 06:49
quelle
5

Beachten Sie, dass Sie eine Zeichenfolge an match übergeben. Wenn wir der Dokumentation folgen, wird dies% co_de tun %. Daher sollten Sie new RegExp(test) und / strings vermeiden und dem RegExp-Konstruktor entsprechende Flags hinzufügen: Der Standardkonstruktor fügt weder eine globale Suche ( /gi ) noch eine Suche ohne Berücksichtigung der Groß- / Kleinschreibung ( g ) hinzu.

Also die Lösung für Ihr Problem:

%Vor%

Dies wird zurückkehren:

%Vor%

Hinweis:

Das Formular i funktioniert nur im Firefox-Browser, ist aber veraltet und löst eine Konsolenwarnung aus Firefox 39 aus (siehe RGraham-Kommentar).

    
TrapII 25.06.2015 06:55
quelle

Tags und Links