2016-03-20 9 views
0

Ich versuche, einen Teil mit .replace() in JavaScript zu ändern.

Grundsätzlich möchte ich vor und nach dem Spiel beliebigen Text einfügen.

var pattern = new RegExp("<div"+"(.*?)>", "g"); 

var text = "<div><div class='someClass'>" 

text = text.replace(pattern, "<pre>"+"<div>"+ "$1" + ">" +"</pre>") 

Der obige Code ändert Text:

"<pre><div>></pre><pre><div> class='someClass'></pre>" 

Neben dem extra ">>" Das ist richtig, aber es ist hässlich in der Funktion ersetzen.

Wie kann ich meine Regex ändern, damit ich

  1. Ich habe keine $ 1 verwenden, da es nicht vollständig according to this

  2. unterstützt Wie kann ich

    ersetzen, um wie einfacher etwas ändern
    text = text.replace(pattern, "<pre>"+ "THING_THAT_MATCHED" +"</pre>") 
    
+0

'$ 1 'im Ersetzungsmuster und unterstützt wird. –

+0

Haben Sie eine Quelle dafür? – humanbeing

+0

Sicher, [MDN String # ersetzen()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter). Sie verwechseln 'RegExp'-Eigenschaften wie' RegExp. $ 1' und Rückwärtsreferenzen innerhalb eines Ersatzmusters. –

Antwort

1

den folgenden Code:

var pattern = new RegExp("<div"+"(.*?)>", "g"); 

var text = "<div><div class='someClass'>" 

text = text.replace(pattern, function(match, first_match) { 
    return "<pre>"+"<div>"+ first_match + ">" +"</pre>" 
}) 

Beachten Sie auch, dass Sie Ihren ursprünglichen Code viel sauberer machen codieren, etwa so:

var pattern = new RegExp("<div"+"(.*?)>", "g"); 

var text = "<div><div class='someClass'>" 

text = text.replace(pattern, "<pre><div>$1></pre>") 
Verwandte Themen