2013-05-23 18 views
14

Ich möchte alle HTML-Tags mit Ausnahme von <br> oder <br/> Tags aus einer Zeichenfolge mit Javascript entfernen. Ich habe viele Fragen wie diese gesehen, aber ihre Antworten entfernen alle HTML-Tags einschließlich <br> und <br/> Tags.Entfernen Sie HTML-Tags außer <br> oder <br/> Tags mit Javascript

Kennt jemand eine Regex, um dies zu tun?

+0

verwenden könnte, wenn es keine
überall sind, nur andere HTML-Tags entfernen. – cp100

+0

Auch wenn geöffnet, ist dies ein Duplikat von [dieser] (http://stackoverflow.com/a/828647/263858) und [dieser] (http://stackoverflow.com/a/18128321/263858) –

+0

Mögliches Duplikat von [Strip Html from Text in JavaScript außer p Tags?] (Https://stackoverflow.com/questions/828572/strip-html-from-text-in-javascript-except-p-tags) – Wolfie

Antwort

8

Probieren Sie diese

function remove_tags(html) 
{ 
    var html = html.replace("<br>","||br||"); 
    var tmp = document.createElement("DIV"); 
    tmp.innerHTML = html; 
    html = tmp.textContent||tmp.innerText; 
    return html.replace("||br||","<br>"); 
} 
+1

Dies ist nicht die beste Lösung, wenn der HTML-Code bereits "|| br ||" enthält vor dem Austausch würden sie alle zu "
" werden. Die Lösung von h2ooooooo ist überlegen, da sie dieses Problem nicht hat. – Aura

34

eine negative Vorschau verwenden (durch einen regulären Ausdruck wie /<(?!br\s*\/?)[^>]+>/g verwenden):

var html = 'this is my <b>string</b> and it\'s pretty cool<br />isn\'t it?<br>Yep, it is. <strong>More HTML tags</strong>'; 
html = html.replace(/<(?!br\s*\/?)[^>]+>/g, ''); 

console.log(html); 
//this is my string and it's pretty cool<br />isn't it?<br>Yep, it is. More HTML tags 

Demo

+0

Sehr saubere Lösung . Danke vielmals. Klappt wunderbar. – Logus

+0

Das würde das Tag '' nicht entfernen, gibt es einen einfachen Edit zu dieser Regexp-Regel, der angibt, dass "br" alleine bleiben muss? (offensichtlich ist es kein gültiges HTML-Tag, aber versuchen, umfangreich zu sein) – Wolfie

+0

@Wolfie Möchten Sie nur '' und NICHT '
' zusammenbringen? [Diese Antwort (in PHP, aber die Regex sollte ziemlich identisch sein) akzeptiert alle Tags beginnend mit br] (https://stackoverflow.com/a/20196175/247893). – h2ooooooo

5

ich auf dem letzten Vorschlag gearbeitet habe eine entwickeln Funktion Entfernen aller oder nur einige Tags behalten

1

Um h2ooooooo Antwort gehören führende Leerzeichen und sein Fall zu erweitern insenctive Sie

/<(?!\s*br\s*\/?)[^>]+>/gi