JSFiddle - React, Tailwind, and code Playground
JavaScript
function isExternal(url) {
var match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);
if (match != null && typeof match[1] === 'string' && match[1].length > 0 && match[1].toLowerCase() !== location.protocol)
return true;
if (match != null && typeof match[2] === 'string' && match[2].length > 0 && match[2].replace(new RegExp(':('+{'http:':80,'https:':443}[location.protocol]+')?$'), '') !== location.host) {
return true;
}
else {
return false;
}
}
function getHostName(url) {
var match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i);
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {
return match[2];
}
else {
return null;
}
}
function getDomain(url) {
var hostName = getHostName(url);
var domain = hostName;
if (hostName != null) {
var parts = hostName.split('.').reverse();
if (parts != null && parts.length > 1) {
domain = parts[1] + '.' + parts[0];
if (hostName.toLowerCase().indexOf('.co.uk') != -1 && parts.length > 2) {
domain = parts[2] + '.' + domain;
}
}
}
return domain;
}
// getHostName Tests
alert(getHostName('http://WWW.first.com/folder/page.html'));
alert(getHostName('http://mail.google.com/folder/page.html'));
alert(getHostName('https://mail.google.com/folder/page.html'));
alert(getHostName('http://www2.somewhere.com/folder/page.html?q=1'));
alert(getHostName('https://www.another.eu/folder/page.html?q=1'));
// getDomain...