JSFiddle - React, Tailwind, and code Playground

by khushboo097

JavaScript

var inputText = "[email protected]\n http://www.google.com\nhttps://facebook.com\n<a href='http://fast.com'>link</a>\n<a href='https://fast.com'>link</a>\nfacebook.com";
console.log(inputText);
var replacedText, replacePattern1, replacePattern2, replacePattern3;
replacePattern1 = /(?!([^<]+)(?=<\/a>))(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
replacePattern2 = /((^|[^\/])(www\.[\S]+(\b|$)))/gim;
replacePattern3 = /(?!([^<]+)<\/a>)(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;
replacePattern4 = /(?!([^<]+)<\/a>)(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
var checkAnchorTag = inputText.match(/<a([^>]+)>(.+?)>/gmi);
replacedText = inputText;
if (checkAnchorTag) {
checkAnchorTag.forEach(function(input) {
let replacedLinkText = input.replace(replacePattern4, '$2');
 replacedText = replacedText.replace(input, replacedLinkText);
replacedText = replacedText.replace(replacePattern2, '$2http://$3');
});
}
console.log('before\n',replacedText);
console.log('\n')
console.log(replacedText.match(replacePattern1));
replacedText = replacedText.replace(replacePattern1,'<a href="$2" target="_blank">$2</a>');
console.log('after\n',replacedText);
replacedText = replacedText.replace(replacePattern2, '$2<a href="http://$3" target="_blank">$3</a>');
replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$2">$2</a>');
alert('\nfinal\n'+replacedText)