Использует ограничение безопасности суффикса document.domain для поиска домена на текущей странице.
Если вам нужно только искать домен в вашем списке хостов:
var domain = (()=>{
let d = location.hostname.split('.'), dd = document.domain
let i = 0
try {
while(document.domain = d.slice(++i).join('.'));
} catch (e) {}
try{
document.domain = dd // restore document.domain
} catch(e){}
return !i ? document.domain : d.slice(i-1).join('.')
})().toLowerCase()
console.log(hostlist.includes(domain+'\n') || hostlist.endsWith('\n'+domain))
Если вам нужно сопоставить поддомены, но не совпадение на доменах root (например, google.com будет ложным, но www.google.com будет истинным, если www.google.com находится в списке хостов, но не google.com):
var domains = (()=>{
let d = location.hostname.split('.'), dd = document.domain,
res = [location.hostname]
let i = 0
try {
while(document.domain = d.slice(++i).join('.'))
res.push(document.domain)
} catch (e) {}
try{
document.domain = dd // restore document.domain
} catch (e) {}
return res
})()
var re = new RegExp(domains
.map(d =>'^' + d.replace(/\./g,'\\.').toLowerCase() + '$')
.join('|'), 'm')
console.log(re, re.test(hostlist))
например: sub1.sub2.sub3.domain.com сгенерирует RegExp: ^sub1\.sub2\.sub3\.domain\.com$|^domain\.com$|^sub3\.domain\.com$|^sub2\.sub3\.domain\.com$
RegEx Demo