const regex = new RegExp('(?<!["\\'>])(http|ftp)(s)?://((?:[-\\w]+\\.)+\\S+[^,.\\s])', 'g')
const str = `http://www.example.com
https://www.example.com
www.example.com
<a href="http://www.example.com">http://www.example.com</a>
<a href="mailto:email@gmail.com">email@gmail.com</a>
http://txttag.mee
<i src="http://www.google.com">hi</i>
<a href="http://google.com"></a>
https://www.txttag.mee
ftp://www.example.com
ftps://www.example.com`;
const subst = `<a href="$1$2://$3">$3</a>`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions