135 votes

Supprimer les balises HTML en Javascript avec Regex

J'essaie de supprimer toutes les balises html d'une chaîne en Javascript. Voici ce que j'ai ... Je ne comprends pas pourquoi ça ne marche pas ... Est-ce que quelqu'un sait ce que je fais mal?

 <script type="text/javascript">

var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);

</script>
 

Merci beaucoup!

299voto

karim79 Points 178055

Essayez ceci, notant que la grammaire du langage HTML est trop complexe pour des expressions régulières pour être correct à 100% du temps:

var regex = /(<([^>]+)>)/ig
,   body = "<p>test</p>"
,   result = body.replace(regex, "");

console.log(result);

Si vous êtes prêt à utiliser une librairie comme jQuery, vous pouvez simplement faire ceci:

console.log($('<p>test</p>').text());

39voto

lytnus Points 990

C'est une vieille question, mais je suis tombé sur ça et j'ai pensé partager la méthode que j'ai utilisé:

var body = '<div id="anid">some <a href="link">text</a></div> and some more text';
var temp = document.createElement("div");
temp.innerHTML = body;
var sanitized = temp.textContent || temp.innerText;

épurés contiennent à présent: "some text and some more text"

Simple, pas de jQuery nécessaire, et il ne faut pas vous laisser tomber, même dans les cas plus complexes :)

James

1voto

Sharikul Islam Points 101

mon simple bibliothèque JavaScript appelé FuncJS a une fonction appelée "strip_tags ()", ce qui ne la tâche pour vous - sans vous obliger à entrer des expressions régulières.

Par exemple, disons que vous voulez supprimer des balises à partir d'une phrase - avec cette fonction, vous pouvez le faire simplement comme ceci:

strip_tags("This string <em>contains</em> <strong>a lot</strong> of tags!");

Ceci va produire "Cette chaîne de caractères contient un grand nombre de balises!".

Pour une meilleure compréhension, veuillez lire la documentation à http://docs.funcjs.webege.com/strip_tags().html.

En outre, si vous le souhaitez, veuillez fournir des commentaires par le biais du formulaire. Il serait très utile pour moi!

1voto

vous pouvez utiliser une puissante bibliothèque de gestion de la Chaîne qui est undrescore.string.js

_('a <a href="#">link</a>').stripTags()

=> 'lien'

_('a <a href="#">link</a><script>alert("hello world!")</script>').stripTags()

=> 'un linkalert("hello world!")'

N'oubliez pas d'importer cette lib comme suit :

        <script src="underscore.js" type="text/javascript"></script>
        <script src="underscore.string.js" type="text/javascript"></script>
        <script type="text/javascript"> _.mixin(_.str.exports())</script>

0voto

Mike Samuel Points 54712

Pour un HTML propre désinfectant en JS, voir http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X