Skip to content

Instantly share code, notes, and snippets.

Created January 29, 2013 11:48
Show Gist options
  • Save anonymous/4663683 to your computer and use it in GitHub Desktop.
Save anonymous/4663683 to your computer and use it in GitHub Desktop.
Validate TLDs in JavaScript / Jan 29th, 2013
// to save bytes...
var T = true;
/* TLDs as of Jan 2013
* For faster lookup we store TLDs as properties of an object.
*
* Source: http://data.iana.org/TLD/tlds-alpha-by-domain.txt
*/
var topLevelDomains = {
'ac':T,'ad':T,'ae':T,'aero':T,'af':T,'ag':T,'ai':T,'al':T,'am':T,'an':T,'ao':T,'aq':T,'ar':T,'arpa':T,'as':T,'asia':T,'at':T,'au':T,'aw':T,'ax':T,'az':T,
'ba':T,'bb':T,'bd':T,'be':T,'bf':T,'bg':T,'bh':T,'bi':T,'biz':T,'bj':T,'bm':T,'bn':T,'bo':T,'br':T,'bs':T,'bt':T,'bv':T,'bw':T,'by':T,'bz':T,
'ca':T,'cat':T,'cc':T,'cd':T,'cf':T,'cg':T,'ch':T,'ci':T,'ck':T,'cl':T,'cm':T,'cn':T,'co':T,'com':T,'coop':T,'cr':T,'cu':T,'cv':T,'cw':T,'cx':T,'cy':T,'cz':T,
'de':T,'dj':T,'dk':T,'dm':T,'do':T,'dz':T,
'ec':T,'edu':T,'ee':T,'eg':T,'er':T,'es':T,'et':T,'eu':T,
'fi':T,'fj':T,'fk':T,'fm':T,'fo':T,'fr':T,
'ga':T,'gb':T,'gd':T,'ge':T,'gf':T,'gg':T,'gh':T,'gi':T,'gl':T,'gm':T,'gn':T,'gov':T,'gp':T,'gq':T,'gr':T,'gs':T,'gt':T,'gu':T,'gw':T,'gy':T,
'hk':T,'hm':T,'hn':T,'hr':T,'ht':T,'hu':T,
'id':T,'ie':T,'il':T,'im':T,'in':T,'info':T,'int':T,'io':T,'iq':T,'ir':T,'is':T,'it':T,
'je':T,'jm':T,'jo':T,'jobs':T,'jp':T,
'ke':T,'kg':T,'kh':T,'ki':T,'km':T,'kn':T,'kp':T,'kr':T,'kw':T,'ky':T,'kz':T,
'la':T,'lb':T,'lc':T,'li':T,'lk':T,'lr':T,'ls':T,'lt':T,'lu':T,'lv':T,'ly':T,
'ma':T,'mc':T,'md':T,'me':T,'mg':T,'mh':T,'mil':T,'mk':T,'ml':T,'mm':T,'mn':T,'mo':T,'mobi':T,'mp':T,'mq':T,'mr':T,'ms':T,'mt':T,'mu':T,'museum':T,'mv':T,'mw':T,'mx':T,'my':T,'mz':T,
'na':T,'name':T,'nc':T,'ne':T,'net':T,'nf':T,'ng':T,'ni':T,'nl':T,'no':T,'np':T,'nr':T,'nu':T,'nz':T,
'om':T,'org':T,
'pa':T,'pe':T,'pf':T,'pg':T,'ph':T,'pk':T,'pl':T,'pm':T,'pn':T,'post':T,'pr':T,'pro':T,'ps':T,'pt':T,'pw':T,'py':T,
'qa':T,
're':T,'ro':T,'rs':T,'ru':T,'rw':T,
'sa':T,'sb':T,'sc':T,'sd':T,'se':T,'sg':T,'sh':T,'si':T,'sj':T,'sk':T,'sl':T,'sm':T,'sn':T,'so':T,'sr':T,'st':T,'su':T,'sv':T,'sx':T,'sy':T,'sz':T,
'tc':T,'td':T,'tel':T,'tf':T,'tg':T,'th':T,'tj':T,'tk':T,'tl':T,'tm':T,'tn':T,'to':T,'tp':T,'tr':T,'travel':T,'tt':T,'tv':T,'tw':T,'tz':T,
'ua':T,'ug':T,'uk':T,'us':T,'uy':T,'uz':T,
'va':T,'vc':T,'ve':T,'vg':T,'vi':T,'vn':T,'vu':T,
'wf':T,'ws':T,
'xn--0zwm56d':T,'xn--11b5bs3a9aj6g':T,'xn--3e0b707e':T,'xn--45brj9c':T,'xn--80akhbyknj4f':T,'xn--80ao21a':T,'xn--90a3ac':T,'xn--9t4b11yi5a':T,'xn--clchc0ea0b2g2a9gcd':T,'xn--deba0ad':T,'xn--fiqs8s':T,'xn--fiqz9s':T,'xn--fpcrj9c3d':T,'xn--fzc2c9e2c':T,'xn--g6w251d':T,'xn--gecrj9c':T,'xn--h2brj9c':T,'xn--hgbk6aj7f53bba':T,'xn--hlcj6aya9esc7a':T,'xn--j6w193g':T,'xn--jxalpdlp':T,'xn--kgbechtv':T,'xn--kprw13d':T,'xn--kpry57d':T,'xn--lgbbat1ad8j':T,'xn--mgb9awbf':T,'xn--mgbaam7a8h':T,'xn--mgbayh7gpa':T,'xn--mgbbh1a71e':T,'xn--mgbc0a9azcg':T,'xn--mgberp4a5d4ar':T,'xn--mgbx4cd0ab':T,'xn--o3cw4h':T,'xn--ogbpf8fl':T,'xn--p1ai':T,'xn--pgbs0dh':T,'xn--s9brj9c':T,'xn--wgbh1c':T,'xn--wgbl6a':T,'xn--xkc2al3hye2a':T,'xn--xkc2dl3a5ee0h':T,'xn--yfro4i67o':T,'xn--ygbi2ammx':T,'xn--zckzah':T,'xxx':T,
'ye':T,'yt':T,
'za':T,'zm':T,'zw':T
}
/* Example: Validate TLD of an Anchor node.
* You should pass the URL into an Anchor node for various reasons.
*/
var a = document.createElement('a');
a.href = 'http://www.heise.de';
var tld = a.hostname.split('.').pop();
var ok = topLevelDomains.hasOwnProperty(tld);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment