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