Rimuovi i tag HTML in Javascript con Regex

Sto cercando di rimuovere tutti i tag html da una stringa in Javascript. Ecco cosa ho … Non riesco a capire perché non funziona … qualcuno sa cosa sto facendo male?

 var regex = "//"; var body = "

test

"; var result = body.replace(regex, ""); alert(result);

Molte grazie!

Prova questo, osservando che la grammatica dell’HTML è troppo complessa perché le espressioni regolari siano corrette al 100% delle volte:

 var regex = /(<([^>]+)>)/ig , body = "

test

" , result = body.replace(regex, ""); console.log(result);

Se sei disposto ad usare una libreria come jQuery , puoi semplicemente fare questo:

 console.log($('

test

').text());

Questa è una domanda vecchia, ma mi sono imbattuto in esso e ho pensato di condividere il metodo che ho usato:

 var body = '
some text
and some more text'; var temp = document.createElement("div"); temp.innerHTML = body; var sanitized = temp.textContent || temp.innerText;

ora disinfettato contiene: "some text and some more text"

Semplice, non è necessario jQuery e non dovrebbe deluderti nemmeno nei casi più complessi 🙂

Giacomo

Questo ha funzionato per me.

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

la mia semplice libreria JavaScript chiamata FuncJS ha una funzione chiamata “strip_tags ()” che esegue l’operazione per te, senza richiedere l’inserimento di espressioni regolari.

Ad esempio, supponi di voler rimuovere tag da una frase – con questa funzione, puoi farlo semplicemente in questo modo:

 strip_tags("This string contains a lot of tags!"); 

Questo produrrà “Questa stringa contiene molti tag!”.

Per una migliore comprensione, si prega di leggere la documentazione su GitHub FuncJS .

Inoltre, se lo desideri, invia un feedback tramite il modulo. Sarebbe molto utile per me!

Ecco come lo fa TextAngular (WYSISYG Editor). Ho anche trovato che questa è la risposta più coerente, che NON è REGEX.

 @license textAngular Author : Austin Anderson License : 2013 MIT Version 1.5.16 // turn html into pure text that shows visiblity function stripHtmlToText(html) { var tmp = document.createElement("DIV"); tmp.innerHTML = html; var res = tmp.textContent || tmp.innerText || ''; res.replace('\u200B', ''); // zero width space res = res.trim(); return res; } 

puoi usare una potente libreria per la gestione String che è undrescore.string.js

 _('a https://stackoverflow.com/questions/1499889/remove-html-tags-in-javascript-with-regex/link').stripTags() 

=> ‘un collegamento’

 _('a https://stackoverflow.com/questions/1499889/remove-html-tags-in-javascript-with-regex/link').stripTags() 

=> ‘a https://stackoverflow.com/questions/1499889/remove-html-tags-in-javascript-with-regex/linkalert (“ciao mondo!”)’

Non dimenticare di importare questa libreria come segue:

     

Per un disinfettante HTML corretto in JS, vedi http://code.google.com/p/google-caa/wiki/JsHtmlSanitizer

      

La risposta selezionata non garantisce sempre che l’HTML venga rimosso, poiché è ancora ansible build una stringa HTML non valida attraverso di essa creando una stringa simile alla seguente.

  "<

h1>foo<h1/>"

Questo input garantirà che lo stripping assembla un insieme di tag e comporterà:

  "

foo

"

Inoltre, la funzione di testo di jquery rimuoverà il testo non circondato dai tag.

Ecco una funzione che utilizza jQuery ma dovrebbe essere più robusta contro entrambi questi casi:

 var stripHTML = function(s) { var lastString; do { s = $('
').html(lastString = s).text(); } while(lastString !== s) return s; };

Come altri hanno affermato, regex non funzionerà. Prenditi un momento per leggere il mio articolo sul perché non puoi e non dovresti provare ad analizzare l’html con espressioni regolari, che è ciò che stai facendo quando tenti di rimuovere il codice html dalla tua stringa sorgente.