Ich versuche, alle HTML-Tags aus einer Zeichenfolge in Javascript zu entfernen. Hier ist was ich habe ... Ich kann nicht herausfinden warum es nicht funktioniert ... weiß jemand was ich falsch mache?
<script type="text/javascript">
var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);
</script>
Vielen Dank!
javascript
regex
Gabe
quelle
quelle
"<img src=bogus onerror=alert(1337)"
. Der erste schlägt fehl, weil der HTML-Parser nicht erfordert, dass das letzte Tag durch a geschlossen wird>
, und der zweite schlägt fehl, weil das Laden von Bildern beginnt, noch bevor ein analysierter DOM-Baum zum DOM hinzugefügt wird, und$('<img ...>')
der HTML-Parser aufgerufen wird.>
in einem Attributwert enthalten ist. so<div data="a + b > c">
Dies ist eine alte Frage, aber ich bin darüber gestolpert und dachte, ich würde die Methode teilen, die ich verwendet habe:
sanitized
wird jetzt enthalten:"some text and some more text"
Einfach, keine jQuery erforderlich, und es sollte Sie auch in komplexeren Fällen nicht im Stich lassen.
quelle
innerText
temp.textContent
falls vorhanden, und versuchttemp.innerText
es nur, wenn dies nicht der Fall ist. Ihr Browser sollte den ersteren haben, aber für Browser, die dies nicht tun, wird der letztere stattdessen verwendet :)Das hat bei mir funktioniert.
quelle
console.log( my_html.replace(/( |<([^>]+)>)/ig, "") );
So macht es TextAngular (WYSISYG Editor). Ich fand auch, dass dies die konsequenteste Antwort ist, nämlich NO REGEX.
quelle
Sie können eine leistungsstarke Bibliothek für die Verwaltungszeichenfolge verwenden, die undrescore.string.js lautet
=> 'ein Link'
=> 'ein Linkalert ("Hallo Welt!")'
Vergessen Sie nicht, diese Bibliothek wie folgt zu importieren:
quelle
mein einfaches JavaScript-Bibliothek namens FuncJS hat eine Funktion namens "strip_tags ()", die die Aufgabe für Sie erledigt - ohne dass Sie reguläre Ausdrücke eingeben müssen.
Angenommen, Sie möchten Tags aus einem Satz entfernen. Mit dieser Funktion können Sie dies einfach folgendermaßen tun:
Dies erzeugt "Diese Zeichenfolge enthält viele Tags!".
Zum besseren Verständnis lesen Sie bitte die Dokumentation bei GitHub FuncJS .
Wenn Sie möchten, geben Sie bitte über das Formular ein Feedback. Es wäre sehr hilfreich für mich!
quelle
strip_tags()
anstatt nur für Ihre Bibliothek zu werben und sie nicht zu erklären? Der Link erklärt die API-Verwendung, aber nicht, was sie tut .strip_tags = function(e) { var _hasTag, _tag_string; if (!(e === void 0 || e === null || e === "")) { _tag_string = e; if (typeof _tag_string === "object") { _tag_string = _tag_string.outerHTML; } _hasTag = _tag_string.match(/(<([^>]+)>)/ig); if (_hasTag) { return trim(_tag_string.replace(/(<([^>]+)>)/ig, '')); } else { return trim(_tag_string); } } else { throw new Error("The 'strip_tags' function expects one argument in the form of a string or object."); } };
Dies ist eine Lösung für HTML-Tags und & nbsp usw., und Sie können Bedingungen entfernen und hinzufügen, um den Text ohne HTML zu erhalten, und Sie können ihn durch einen beliebigen ersetzen.
quelle
Eine ordnungsgemäße HTML-Bereinigung in JS finden Sie unter http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
quelle
quelle
Die ausgewählte Antwort stellt nicht immer sicher, dass HTML entfernt wird, da es weiterhin möglich ist, eine ungültige HTML-Zeichenfolge zu erstellen, indem eine Zeichenfolge wie die folgende erstellt wird.
Diese Eingabe stellt sicher, dass das Strippen eine Reihe von Tags für Sie zusammenstellt und führt zu:
Zusätzlich entfernt die Textfunktion von jquery Text, der nicht von Tags umgeben ist.
Hier ist eine Funktion, die jQuery verwendet, aber in beiden Fällen robuster sein sollte:
quelle
Die Art, wie ich es mache, ist praktisch ein Einzeiler.
Die Funktion erstellt ein Range-Objekt und anschließend ein DocumentFragment im Range mit der Zeichenfolge als untergeordnetem Inhalt.
Dann greift es nach dem Text des Fragments, entfernt alle "unsichtbaren" Zeichen / Zeichen mit der Breite Null und schneidet ihn von allen führenden / nachfolgenden Leerzeichen ab.
Mir ist klar, dass diese Frage alt ist. Ich dachte nur, meine Lösung sei einzigartig und wollte sie teilen. :) :)
quelle
Wie andere gesagt haben, wird Regex nicht funktionieren. Nehmen Sie sich einen Moment Zeit, um meinen Artikel darüber zu lesen, warum Sie nicht versuchen können und sollten, HTML mit Regex zu analysieren. Dies tun Sie, wenn Sie versuchen, HTML aus Ihrer Quellzeichenfolge zu entfernen.
quelle