For the Mail Merge project, I need to extract all the hyperlinks in the email message and append email tracking parameters to each of the links. The links can be either embedded in the HTML <a>
tag or they can be mentioned in plain text like example.com - Gmail and other email clients are smart enough to replace such plain text website links into clickable hyperlinks.
I’m using RegEx to pull out these links from HTML / Text and then a simple JavaScript function to manipulate the link.
Replace Links inside HTML Tags
function updateLinksInHTML(html) {
var regex = /href\s*=\s*(['"])(https?:\/\/.+?)\1/gi;
var link;
while ((link = regex.exec(html)) !== null) {
html = html.replace(link[2], 'https://ctrlq.org?redirect_to' + encodeURIComponent(link[2]));
}
return html;
}
Convert Plain Text into Links
Some text make contain links in plain text and this method would replace such links into clickable hyperlinks by adding the anchor tag.
function createTextLinks_(text) {
return (text || '').replace(/([^\S]|^)(((https?\:\/\/)|(www\.))(\S+))/gi, function (match, space, url) {
var hyperlink = url;
if (!hyperlink.match('^https?://')) {
hyperlink = 'http://' + hyperlink;
}
return space + '<a href="' + hyperlink + '">' + url + '</a>';
});
}