JSFiddle - React, Tailwind, and code Playground
HTML
<ul id="results"></ul>
CSS
li {
background:#efefef;
padding:3px 6px;
margin:3px;
}
.failed {
color:red;
}
JavaScript
var tests = {
'vn.search.yahoo.com.vn': 'yahoo.com.vn',
'search.yahoo.com': 'yahoo.com',
'yahoo.com.br': 'yahoo.com.br',
'abc.porto.pt': 'porto.pt',
'ccc.abc.cn': 'abc.cn',
'dorgas.com': 'dorgas.com',
'www.cn.com': 'cn.com',
'abc.iu.uk': 'iu.uk',
'asia.com': 'asia.com',
'br.asia': 'br.asia',
'asia.com.br': 'asia.com.br'
};
function getDomainName(domain) {
var parts = domain.split('.').reverse();
var cnt = parts.length;
if (cnt >= 3) {
// see if the second level domain is a common SLD.
if (parts[1].match(/^(com|edu|gov|net|mil|org|nom|co|name|info|biz)$/i)) {
return parts[2] + '.' + parts[1] + '.' + parts[0];
}
}
return parts[1]+'.'+parts[0];
}
var results = $('#results');
for (var test in tests) {
var domain = tests[test];
match = getDomainName(test),
ok = (match === domain) ? 'ok' : 'failed';
results.append('<li class="' + ok + '">' + test + ': ' + ok + ' (' + match + ')</li>');
}