/* These are TLDs that have an SLD */
var tlds = {
"cy":true,
"ro":true,
"ke":true,
"kh":true,
"ki":true,
"cr":true,
"km":true,
"kn":true,
"kr":true,
"ck":true,
"cn":true,
"kw":true,
"rs":true,
"ca":true,
"kz":true,
"rw":true,
"ru":true,
"za":true,
"zm":true,
"bz":true,
"je":true,
"uy":true,
"bs":true,
"br":true,
"jo":true,
"us":true,
"bh":true,
"bo":true,
"bn":true,
"bb":true,
"ba":true,
"ua":true,
"eg":true,
"ec":true,
"et":true,
"er":true,
"es":true,
"pl":true,
"in":true,
"ph":true,
"il":true,
"pe":true,
"co":true,
"pa":true,
"id":true,
"py":true,
"ug":true,
"ky":true,
"ir":true,
"pt":true,
"pw":true,
"iq":true,
"it":true,
"pr":true,
"sh":true,
"sl":true,
"sn":true,
"sa":true,
"sb":true,
"sc":true,
"sd":true,
"se":true,
"hk":true,
"sg":true,
"sy":true,
"sz":true,
"st":true,
"sv":true,
"om":true,
"th":true,
"ve":true,
"tz":true,
"vn":true,
"vi":true,
"pk":true,
"fk":true,
"fj":true,
"fr":true,
"ni":true,
"ng":true,
"nf":true,
"re":true,
"na":true,
"qa":true,
"tw":true,
"nr":true,
"np":true,
"ac":true,
"af":true,
"ae":true,
"ao":true,
"al":true,
"yu":true,
"ar":true,
"tj":true,
"at":true,
"au":true,
"ye":true,
"mv":true,
"mw":true,
"mt":true,
"mu":true,
"tr":true,
"mz":true,
"tt":true,
"mx":true,
"my":true,
"mg":true,
"me":true,
"mc":true,
"ma":true,
"mn":true,
"mo":true,
"ml":true,
"mk":true,
"do":true,
"dz":true,
"ps":true,
"lr":true,
"tn":true,
"lv":true,
"ly":true,
"lb":true,
"lk":true,
"gg":true,
"uk":true,
"gn":true,
"gh":true,
"gt":true,
"gu":true,
"jp":true,
"gr":true,
"nz":true
}
function isSecondLevelDomainPresent(domainParts) {
return typeof tlds[domainParts[domainParts.length-1]] != "undefined";
}
function getDomainFromHostname(url) {
domainParts = url.split(".");
var cutOff =2;
if (isSecondLevelDomainPresent(domainParts)) {
cutOff=3;
}
return domainParts.slice(domainParts.length-cutOff, domainParts.length).join(".");
}
Au lieu d'écrire un regex volumineux, pourquoi ne pas utiliser la liste des TLD connus nécessitant un SLD et créer une table de hachage. Ensuite, lorsque vous divisez l’URL, vous pouvez savoir s’il faut prendre les 2 dernières pièces ou les 3 dernières.