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 = /<([a-z, \/][a-z0-9]*)\b[^>]*>/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, '<').replace(/>/g, '>'));
allowedEscaped = allowed.replace(/</g, '<').replace(/>/g, '>');
//console.log(allowed);
//console.log(allowedEscaped);
var escapeChars = {
'&': '&',
'"': '"',
"'": ''',
'`': '`',
'<': '<',
'>': '>'
};
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>']);