Próbuję usunąć wszystkie tagi HTML z ciągu znaków w JavaScript. Oto, co mam… Nie mogę zrozumieć, dlaczego to nie działa… czy ktoś wie, co robię źle?
<script type="text/javascript">
var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);
</script>
Wielkie dzięki!
javascript
regex
Gabe
źródło
źródło
"<img src=bogus onerror=alert(1337)"
. Pierwszy kończy się niepowodzeniem, ponieważ parser HTML nie wymaga, aby ostatni znacznik był zamykany a>
, a drugi nie, ponieważ ładowanie obrazu rozpoczyna się jeszcze przed dodaniem przeanalizowanego drzewa DOM do DOM i$('<img ...>')
wywołuje parser HTML.>
wartość atrybutu zawiera a; w ten sposób<div data="a + b > c">
To stare pytanie, ale natknąłem się na nie i pomyślałem, że podzielę się metodą, której użyłem:
sanitized
będzie teraz zawierać:"some text and some more text"
Proste, nie jest potrzebne jQuery i nie powinno Cię zawieść nawet w bardziej skomplikowanych przypadkach.
źródło
innerText
temp.textContent
jeśli istnieje, i spróbuje tylko,temp.innerText
jeśli nie. Twoja przeglądarka powinna mieć tego pierwszego, ale dla przeglądarek, które nie, ten ostatni jest stosowany zamiast :)To zadziałało dla mnie.
źródło
console.log( my_html.replace(/( |<([^>]+)>)/ig, "") );
Oto jak robi to TextAngular (Edytor WYSISYG). Okazało się również, że jest to najbardziej spójna odpowiedź, czyli NIE REGEX.
źródło
możesz użyć potężnej biblioteki do zarządzania String, która jest undrescore.string.js
=> 'link'
=> 'linkalert ("witaj świecie!")'
Nie zapomnij zaimportować tej biblioteki w następujący sposób:
źródło
mój prosty biblioteka JavaScript o nazwie FuncJS ma funkcję „strip_tags ()”, która wykonuje to zadanie za Ciebie - bez konieczności wprowadzania jakichkolwiek wyrażeń regularnych.
Na przykład powiedz, że chcesz usunąć tagi ze zdania - dzięki tej funkcji możesz to zrobić w następujący sposób:
To da "Ten ciąg zawiera dużo tagów!".
Aby uzyskać lepsze zrozumienie, przeczytaj dokumentację na GitHub FuncJS .
Dodatkowo, jeśli chcesz, prześlij swoją opinię za pośrednictwem formularza. Byłoby to dla mnie bardzo pomocne!
źródło
strip_tags()
robi zamiast tylko promować swoją bibliotekę i nie wyjaśniać jej? Odnośnik wyjaśnia użycie interfejsu API, ale nie wyjaśnia, do czego służy .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."); } };
Jest to rozwiązanie dla tagów HTML i & nbsp itp. Możesz usunąć i dodać warunki, aby uzyskać tekst bez HTML i zastąpić go dowolnym.
źródło
Aby zapoznać się z prawidłowym środkiem dezynfekującym HTML w JS, zobacz http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
źródło
źródło
Wybrana odpowiedź nie zawsze zapewnia usunięcie kodu HTML, ponieważ nadal możliwe jest skonstruowanie za jego pośrednictwem nieprawidłowego ciągu HTML, tworząc ciąg podobny do poniższego.
Te dane wejściowe zagwarantują, że usuwanie elementów utworzy dla Ciebie zestaw tagów i spowoduje:
dodatkowo funkcja tekstowa jquery usunie tekst nie otoczony tagami.
Oto funkcja, która używa jQuery, ale powinna być bardziej odporna na oba te przypadki:
źródło
Sposób, w jaki to robię, jest praktycznie jednoliniowy.
Funkcja tworzy obiekt Range, a następnie tworzy DocumentFragment w Range z ciągiem znaków jako zawartością podrzędną.
Następnie przechwytuje tekst fragmentu, usuwa wszelkie „niewidoczne” / zerowej szerokości znaki i przycina go z wszelkich początkowych / końcowych białych znaków.
Zdaję sobie sprawę, że to pytanie jest stare, po prostu pomyślałem, że moje rozwiązanie jest wyjątkowe i chciałem się nim podzielić. :)
źródło
Jak stwierdzili inni, regex nie będzie działać. Poświęć chwilę na przeczytanie mojego artykułu o tym, dlaczego nie możesz i nie powinieneś próbować analizować html za pomocą wyrażenia regularnego, co robisz, gdy próbujesz usunąć kod HTML z ciągu źródłowego.
źródło