JSFiddle - React, Tailwind, and code Playground

HTML

<button onclick="bbcode('.selector', '[bb-code]', '[/bb-code]')"><b>BB-code</b></button>
<br>
<textarea class="selector">Здесь любой текст</textarea>

JavaScript

function bbcode(DOM_selector, text_before, text_after, callback) 
{
var dom = $(DOM_selector);
//IE
if (document.selection)
{
var s = document.selection.createRange();
if(s.text)
{
s.text = text_before + s.text + text_after;
}
else
{
dom.val(dom.val() + text_before + text_after);
}
} else
{
//Firefox, Safari, Opera, Chrome, etc.

var sel = 
{
start: dom[0].selectionStart,
end: dom[0].selectionEnd
};
dom.val(dom.val().substring(0, sel.start) + text_before + dom.val().substring(sel.start, sel.end) + text_after + dom.val().substring(sel.end, dom.val().length|0));
}
if (typeof callback == 'function') {
callback();
}
}