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/ig; 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 + '' + url + ''; } ); };