w3schools tag elemento javascript html stripping

javascript - tag - p html



Elimine las etiquetas html excepto las etiquetas<br> o<br/> con javascript (4)

Quiero eliminar todas las etiquetas html excepto las etiquetas <br> o <br/> de una cadena usando javascript. He visto muchas preguntas como esta, pero sus respuestas eliminarán todas las etiquetas html, incluidas las etiquetas <br> y <br/> .

¿Alguien sabe una expresión regular para hacer esto?


He trabajado en la última sugerencia para desarrollar una función eliminando todos o simplemente manteniendo algunas etiquetas

function strip_tags( _html /*you can put each single tag per argument*/ ) { var _tags = [], _tag = "" ; for( var _a = 1 ; _a < arguments.length ; _a++ ) { _tag = arguments[_a].replace( /<|>/g, '''' ).trim() ; if ( arguments[_a].length > 0 ) _tags.push( _tag, "/"+_tag ); } if ( !( typeof _html == "string" ) && !( _html instanceof String ) ) return "" ; else if ( _tags.length == 0 ) return _html.replace( /<(/s*//?)[^>]+>/g, "" ) ; else { var _re = new RegExp( "<(?!("+_tags.join("|")+")/s*//?)[^>]+>", "g" ); return _html.replace( _re, '''' ); } } var _html = "<b>Just</b> some <i>tags</i> and text to test <u>this code</u>" ; document.write( "This is the original html code including some tags<br>" ); document.write( _html + "<br><br>" ); // original html code document.write( "Now we remove all tags (plain text)<br>" ); document.write( strip_tags( _html ) + "<br><br>" ); // remove all tags document.write( "Only the bold tag is kept<br>" ); document.write( strip_tags( _html, "b" ) + "<br><br>" ); // keep <b> only document.write( "Only the underline tag is kept<br>" ); document.write( strip_tags( _html, "u" ) + "<br><br>" ); // keep <u> only document.write( "Only the italic tag is kept<br>" ); document.write( strip_tags( _html, "<i>" ) + "<br><br>" ); // keep <i> only document.write( "Keeping both italic and underline<br>" ); document.write( strip_tags( _html, "i", "u" ) ); // keep both <i> and <u>


Para expandir h2ooooooo Responda para incluir espacios iniciales y tener en cuenta que podría usar

/<(?!/s*br/s*//?)[^>]+>/gi


Prueba esto

function remove_tags(html) { var html = html.replace("<br>","||br||"); var tmp = document.createElement("DIV"); tmp.innerHTML = html; html = tmp.textContent||tmp.innerText; return html.replace("||br||","<br>"); }


Use un lookahead negativo (usando un regex como /<(?!br/s*//?)[^>]+>/g ):

var html = ''this is my <b>string</b> and it/'s pretty cool<br />isn/'t it?<br>Yep, it is. <strong>More HTML tags</strong>''; html = html.replace(/<(?!br/s*//?)[^>]+>/g, ''''); console.log(html); //this is my string and it''s pretty cool<br />isn''t it?<br>Yep, it is. More HTML tags

Demo