2017-08-28 5 views
0

Ich habe eine Zeichenfolge und ich möchte den Wert zwischen zwei Kommentaren in dieser Zeichenfolge aktualisieren.Ersetzen Sie den Text zwischen zwei Zeichenfolgen mit JS RegEx

Ich bin nicht sicher, wie ich das mit RegEx tun kann

var string = "/* ANIMATION START */ new string should be added here /* ANIMATION END */"; 

Ich weiß, was ich .replace() mit RegEx verwenden soll, aber ich weiß nicht, um den Ausdruck zu erstellen.

Antwort

1

Dies ist die Regex Sie verwenden müssen:

\/\*[\w\s]+\*\/([\w\s]+)\/\*[\w\s]+\*\/ 

Demo:

Dies ist a sample code Sie den Text verwenden müssen, um ersetzen und erhalten die gewünschter Ausgang:

var string = "/* ANIMATION START */ new string should be added here /* ANIMATION END */"; 
 
var regex = /(\/\*[\w\s]+\*\/)([\w\s]+)(\/\*[\w\s]+\*\/)/ig; 
 
string = string.replace(regex, "$1 ###ADDED TEXT### $3"); 
 
console.log(string);

Wir müssen nur jeweils zwei weitere passende Gruppen verwenden, für die ANIMATION START und ANIMATION END Teile, so können wir sie in der Ersatzzeichenfolge wiederverwenden.

+0

Danke funktioniert funktioniert im test! Habe nur einen Fehler, wenn ich das zu JS 'Unexpected token ILLEGAL' hinzufüge ' var string = "/ * ANIMATION START */neue Zeichenfolge sollte hier hinzugefügt werden/* ANIMATION END * /"; var regex = \/\ * [\ w \ s] + \ * \/([\ w \ s] +) \/\ * [\ w \ s] + \ * \ /; string = string.replace (Regex, "Ein paar coole Codee !!!"); ' –

+0

@DenisLapiLapadatovic Nun, Sie haben diese Ausnahme, weil die Regex nicht korrekt ist, müssen Sie es mit' RegExp' Konstruktor erstellen oder indem Sie es umhüllen zwischen zwei '/', zur Kenntnisnahme: die Verwendung der Regex in einem Ersatz-Aufruf wird die gesamte Regex ersetzen. –

+1

Das funktioniert super! Vielen Dank! –

-1

Es gibt 3 Teile:.

"(\ [\ s \ S] | [^"]) *“für den Abgleich in doppelte Anführungszeichen Strings

‚(\ [\ s \ S] | [^ ']) *' für einzelne Anführungszeichen passend

(// |..?./* [\ s \ S] * /) sowohl für einzelne Zeilen und mehrzeilige Kommentare passenden

Die Ersetzen Sie die Funktion, überprüfen Sie, ob die übereinstimmende Zeichenfolge ein Kommentar ist. Wenn dies nicht der Fall ist, ersetzen Sie sie nicht. Ist dies der Fall, ersetzen Sie "und".

function t_replace(data){ 
    var re = /"(\\[\s\S]|[^"])*"|'(\\[\s\S]|[^'])*'|(\/\/.*|\/\*[\s\S]*?\*\/)/g; 
    return data.replace(re, function(all, strDouble, strSingle, comment) { 
     if (comment) { 
      return all.replace(/"/g, '"').replace(/'/g, '''); 
     } 
     return all; 
    }); 
} 
Verwandte Themen