2009-05-11 9 views
4

Für das Beispiel zu ersetzen, ich versucheDer Versuch, HTML-Tags mit regex

<script type='text/javascript'>some stuff</script> 

mit ersetzen:

alert(o.replace(/(?:<\s*\/?\s*)(script)(?:\s*([^>]*)?\s*>)/gi ,'div')); 

:

<div type='text/javascript'>some stuff</div> 

ich zur Zeit mit dem Testen bin Aber was ich bekomme ist:

divsomestuffdiv 

Wie kann ich dies nur den "Skript" Teil ersetzen und die anderen Markup und Attribut Zeichen erhalten?

Antwort

10

Sie haben die öffnenden und schließenden Tag-Klammern. Also versuchen Sie dies:

2

DOM-Methoden sind besser als reguläre Ausdrücke dafür geeignet. Auf diese Weise werden Sie Ihr Dokument logisch statt als Plain-Text zu manipulieren:

var els = document.getElementsByTagName('script'); 
for (var i = 0, el; el = els[i]; i++) { 
    var new = document.createElement('div'); 
    new.type = el.type; 
    el.parentNode.replaceChild(el, new); 
} 
2

Eine naive, aber lesbare Weise es i die

<script

annehmen und erstes Spiel und ersetzen in zwei Durchgängen zu tun wäre,

Teil mit

<div

und dann noch die

</script>

und es mit

</div>

ersetzen passen würde