JSFiddle - React, Tailwind, and code Playground

HTML

<textarea class=q cols=100 rows=10>
 '<a href="#">фывафыв фыва вв</a>' asdf - asdfa... яблоко- маблокоa asdfa- asdf
   cbcz тыква -мыква
   яблоко-тыква
-my friend
- ahtadf
- фывывабо
ывафыва

</textarea>

JavaScript

function changeText(text){
    var el = document.createElement("DIV");
    el.innerHTML = text;
    for(var i=0, l=el.childNodes.length; i<l; i++){
        if (el.childNodes[i].hasChildNodes() && el.childNodes.length>1){
            el.childNodes[i].innerHTML = changeText(el.childNodes[i].innerHTML);
        }
        else{
            el.childNodes[i].textContent = el.childNodes[i].textContent.replace(/\x27/g, '\x22').replace(/(\w)\x22(\w)/g, '$1\x27$2').replace(/(^)\x22(\s)/g, '$1»$2').replace(/(^|\s|\()"/g, "$1«").replace(/"(\;|\!|\?|\:|\.|\,|$|\)|\s)/g, "»$1").replace(/\.{3,}/g, "…").replace(/(\W)-(\W)/g, "$1——$2");
        }             
    }
    return el.innerHTML;
}
$(document).ready(function(){
	

	$(document).on('focus', ".q", function() {
$(".q").val(changeText($(".q").val()));
});
	
	
})