JSFiddle - React, Tailwind, and code Playground

HTML

ссылка текстом на vk.ru. псевдоссылки могут стоять даже МЕЖДУ<sup>http://google.ru/?q=слово</sup>СЛОВ<hr>

ссылка на карту google maps
http://maps.google.ru/maps/place?q=59.944215,30.307012<hr>

ссылка текстом в элементе с атрибутами
<br>
<i onclick="alert('Приятного просмотра');" style="border:1px red solid">http://wiki.winehq.org/UsefulRegistryKeys</i>

<hr>
на жирной - js'ый обработчик клика.
<b id="aa">http://archlinux.org</b>
<script>
document.getElementById('aa').onclick = function(){alert('Клик на жирном!')}
</script>
<hr>
текстовая ссылка вложена в 5 дивов
<div>
    <div>
        <div>
            <div>
                <div>
                    http://yandex.ru
                </div>
            </div>
        </div> 
    </div>
</div>

JavaScript

var e=/((?:(?:http|https|ftp):\/\/)?(?:www)?((?:\w+\.)+\w+)\/?(?:\/?\w+(?:\.\w+)?)*(?:\?[\w\u0430-\u044f\d%=&,\.;]+)?)/i,f=/[\t\v\s]/g;
(function g(b){for(;b;){if(b.tagName!=="A")if(b.childNodes.length)[].forEach.call(b.childNodes,g);else if(b.nodeType==3){var a=b.nodeValue;if(a&&a.replace(f,"")&&e.exec(a)){var c,d=document.createElement("a");d.href=c=RegExp.$1;d.innerHTML=RegExp.$2;if(a!=c){a=b.splitText(a.indexOf(c));if(a.nodeValue!=c)a=a.splitText(c.length),a=a.previousSibling;a.parentNode.replaceChild(d,a)}else b.parentNode.replaceChild(d,b)}}b=b.nextSibling}})(document.body.firstChild);