JSFiddle - React, Tailwind, and code Playground

by Vladymyr Shevchuk

JavaScript

var input = "<b>213123</b> <div></div> <p>123123</p>";

function replace(input, allowed) {
    var result = '';
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
    var tags2 = /&lt;([a-z, \/][a-z0-9]*)\b[^&gt;]*&gt;/gi;
    var ltGtRegExp = /<|>/gi;
    allowed = (((allowed || '') + '').toLowerCase().match(/<\/?[a-z][a-z0-9]*>/g) || []).join(''); 
     
    var arr = [];
    
    ('' + input).replace(tags, function($0, $1) {
        console.log("0: " + $0);
        console.log("1: " + $1);
        console.log(allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '');
        if (allowed.indexOf('<' + $1.toLowerCase() + '>') > -1) {
            arr.push($0);
        }   
    });
    
    console.log("arr: " + arr.join(''));
    console.log("arrEscaped: " + arr.join('').replace(/</g, '&lt;').replace(/>/g, '&gt;'));
    
    allowedEscaped = allowed.replace(/</g, '&lt;').replace(/>/g, '&gt;');
    //console.log(allowed);
    //console.log(allowedEscaped);

    var escapeChars = {
        '&': '&amp;',
        '"': '&quot;',
        "'": '&#39;',
        '`': '&#96;',
        '<': '&lt;',
        '>': '&gt;'
    };
    
    var escapeRegExp = new RegExp('[' + Object.keys(escapeChars).join('') + ']', 'g');

    var riba = ('' + input).replace(escapeRegExp, function(match) {
        return escapeChars[match];
    });
    
    //console.log(riba);
    
    result = riba.replace(tags2, function($0, $1) {
        console.log("$0 " + $0);
        console.log("$1 " + $1);
        return (allowedEscaped.indexOf($0.toLowerCase()) > -1) ?  '<' + $1.toLowerCase() + '>': '';
    });
    

   console.log(result);
        
};
      

 replace(input, ['<br>', '<b>', '<p>']);