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.