Подтвердить что ты не робот

Удалить теги html, кроме тэгов или или <br/"> с помощью javascript

Я хочу удалить все теги html, кроме тегов <br> или <br/> из строки, используя javascript. Я видел много таких вопросов, но их ответы будут удалять все теги html, включая теги <br> и <br/>.

Кто-нибудь знает регулярное выражение для этого?

4b9b3361

Ответ 1

Попробуйте это

 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>");  
 }

Ответ 2

Используйте отрицательный lookahead (с помощью регулярного выражения, такого как /<(?!br\s*\/?)[^>]+>/g):

var html = 'this is my <b>string</b> and it\ 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 pretty cool<br />isn't it?<br>Yep, it is. More HTML tags

Демо

Ответ 3

Я работал над последним предложением о разработке функции, удаляющей все или просто сохраняя некоторые теги

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>

Ответ 4

Чтобы расширить h2ooooooo Ответ, чтобы включить в себя ведущие пробелы и быть вложенным в регистр, вы могли бы использовать

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