Проще всего в несколько проходов
<html>
<script>
text = 'Привет) http://site.com/tf/ [url] http://site.com/[/url] Привет) [url]http://www.site.com/tf/[/url] http://site.com/'
alert(
text.replace(/((http|https|ftp|ftps):\/\/(www\.)?\S+)/gi, "[url]$1[/url]")
.replace(/\[url\]\s*\[url\]/ig, "[url]")
.replace(/\[\/url\]\s*\[\/url\]/ig, "[/url]")
)
</script>
</html>