Skip to content

Instantly share code, notes, and snippets.

@heapwolf
Last active December 12, 2015 01:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save heapwolf/4692867 to your computer and use it in GitHub Desktop.
Save heapwolf/4692867 to your computer and use it in GitHub Desktop.
A function to parse the domain from the host. #tld #domain #parser #parse #javascript #js #nodejs
exports.domain = function(str) {
var a = str.match(/^(\w+:\/\/)?([\w-.]+)/)[2].split('.');
return (a[a.length-1].length === 2 && a[a.length - 2].length === 2 ? a.splice(-3) : a.splice(-2)).join('.');
};
@heapwolf
Copy link
Author

heapwolf commented Feb 1, 2013

var tld = require('./domain-parser');
var assert = require('assert');

var test1 = 'http://google.com/?foo=bar';
var test2 = 'https://www.google.info/?foo';
var test3 = 'http://abc.def.google.co.uk/?foo';
var test4 = 'http://abc.def.google.com.uk/?foo';
var test5 = 'http://abc.def.google.bar.uk/?foo';
var test6 = 'http://google.ly/?foo';
var test7 = 'http://bit.ly';
var test8 = 'http://mobile.bit.ly';
var test9 = 'http://m.bit.ly';

assert.equal(tld.domain(test1), 'google.com');
assert.equal(tld.domain(test2), 'google.info');
assert.equal(tld.domain(test3), 'google.co.uk');
assert.equal(tld.domain(test4), 'google.com.uk');
assert.equal(tld.domain(test5), 'bar.uk');
assert.equal(tld.domain(test6), 'google.ly');
assert.equal(tld.domain(test7), 'bit.ly');
assert.equal(tld.domain(test8), 'bit.ly');

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment