J'essaie de supprimer toutes les balises html d'une chaîne en Javascript. Voici ce que j'ai ... Je ne peux pas comprendre pourquoi ça ne marche pas ... tout le monde sait ce que je fais de mal?
<script type="text/javascript">
var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);
</script>
Merci beaucoup!
javascript
regex
Gabe
la source
la source
"<img src=bogus onerror=alert(1337)"
. Le premier échoue parce que l'analyseur HTML n'exige pas que la dernière balise soit fermée par un>
, et le second échoue parce que le chargement de l'image commence avant même qu'un arbre DOM analysé soit ajouté au DOM, et$('<img ...>')
appelle l'analyseur HTML.>
est inclus dans une valeur d'attribut; like this<div data="a + b > c">
C'est une vieille question, mais je suis tombé dessus et j'ai pensé partager la méthode que j'ai utilisée:
sanitized
contiendra désormais:"some text and some more text"
Simple, pas besoin de jQuery, et il ne devrait pas vous laisser tomber même dans des cas plus complexes.
la source
innerText
temp.textContent
si elle existe, et essaiera seulementtemp.innerText
si elle n'existe pas. Votre navigateur devrait avoir le premier, mais pour les navigateurs qui n'en ont pas, le dernier est utilisé à la place :)Cela a fonctionné pour moi.
la source
console.log( my_html.replace(/( |<([^>]+)>)/ig, "") );
Voici comment TextAngular (WYSISYG Editor) le fait. J'ai également trouvé que c'était la réponse la plus cohérente, qui n'est PAS DE REGEX.
la source
vous pouvez utiliser une bibliothèque puissante pour la gestion String qui est undrescore.string.js
=> 'un lien'
=> 'un linkalert ("bonjour le monde!")'
N'oubliez pas d'importer cette bibliothèque comme suit:
la source
ma bibliothèque JavaScript simple appelée FuncJS a une fonction appelée "strip_tags ()" qui fait la tâche à votre place - sans que vous ayez à saisir d'expressions régulières.
Par exemple, disons que vous souhaitez supprimer les balises d'une phrase - avec cette fonction, vous pouvez le faire simplement comme ceci:
Cela produira "Cette chaîne contient beaucoup de balises!".
Pour une meilleure compréhension, veuillez lire la documentation sur GitHub FuncJS .
De plus, si vous le souhaitez, veuillez fournir des commentaires via le formulaire. Cela me serait très utile!
la source
strip_tags()
fait au lieu de simplement promouvoir votre bibliothèque et de ne pas l'expliquer? Le lien explique l'utilisation de l'API mais pas ce qu'elle fait .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."); } };
Il s'agit d'une solution pour la balise HTML et & nbsp etc. et vous pouvez supprimer et ajouter des conditions pour obtenir le texte sans HTML et vous pouvez le remplacer par n'importe quel.
la source
Pour un désinfectant HTML approprié dans JS, consultez http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
la source
la source
La réponse sélectionnée ne garantit pas toujours que le HTML est supprimé, car il est toujours possible de construire une chaîne HTML non valide à travers elle en créant une chaîne comme celle-ci.
Cette entrée garantira que le décapage assemble un ensemble de balises pour vous et se traduira par:
De plus, la fonction de texte de jquery supprimera le texte non entouré de balises.
Voici une fonction qui utilise jQuery mais qui devrait être plus robuste dans ces deux cas:
la source
La façon dont je le fais est pratiquement une ligne unique.
La fonction crée un objet Range , puis crée un DocumentFragment dans le Range avec la chaîne comme contenu enfant.
Ensuite, il saisit le texte du fragment, supprime tous les caractères «invisibles» / de largeur nulle et le rogne de tout espace blanc de début / de fin.
Je me rends compte que cette question est ancienne, je pensais juste que ma solution était unique et je voulais la partager. :)
la source
Comme d'autres l'ont dit, regex ne fonctionnera pas. Prenez un moment pour lire mon article sur les raisons pour lesquelles vous ne pouvez pas et ne devriez pas essayer d'analyser le html avec regex, ce que vous faites lorsque vous essayez de supprimer le html de votre chaîne source.
la source