0

我试图得到的一个例子:

String1 - 'string.co.uk' - would return 'string' and 'co.uk'
String2 - 'random.words.string.co.uk' - would return 'string` and 'co.uk'

我目前有这个:

var split= [];
var tld_part = domain_name.split(".");
var sld_parts = domain_name.split(".")[0];
tld_part = tld_part.slice(1, tld_part.length);
split.push(sld_parts);
split.push(tld_part.join("."));

使用我当前的代码,它从一开始就采用 split 参数,如果可能的话,我想反转它。使用我当前的代码可以做到这一点:

String1 - 'string.co.uk' - returns 'string' and 'co.uk'
String2 - 'random.words.string.co.uk' - would return 'random` and 'words.string.co.uk'

有什么建议么?

4

4 回答 4

2

扩展 elclanrs 的评论:

function getParts(str) {
    var temp = str.split('.').slice(-3) // grabs the last 3 elements
    return {
        tld_parts : [temp[1],temp[2]].join("."),
        sld_parts : temp[0]
    }
}

getParts("foo.bar.baz.co.uk")会回来{ tld_parts : "co.uk", sld_parts : "baz" }

getParts("i.got.99.terms.but.a.bit.aint.one.co.uk")会回来{ tld_parts : "co.uk", sld_parts : "one" }

于 2013-06-10T08:12:25.617 回答
0

想到的一种方法如下

var tld_part = domain_name.split(".");
var name = tld_part[tld_part.length - 2];
var tld = tld_part[tld_part.length - 1] +"."+ tld_part[tld_part.length];
于 2013-06-10T08:14:37.330 回答
0

试试这个

var str='string.co.uk'//or 'random.words.string.co.uk'
var part = str.split('.');
var result = part[part.length - 1].toString() + '.' + part[part.length - 1].toString();
alert(result);
于 2013-06-10T08:23:16.863 回答
0

根据您的用例,执行直接拆分可能不是一个好主意——例如,上面的代码将如何处理.com,甚至只是localhost?在这方面,我会走这RegExp条路:

function stripSubdomains( str ){
  var regs; return (regs = /([^.]+)(\.co)?(\.[^.]+)$/i.exec( str ))
    ? regs[1] + (regs[2]||'') + regs[3]
    : str
  ;
};

正则表达式警察之前 攻击谴责我不够具体,免责声明:

上述内容可以作为对域名的检查,而不是检查^., 来检查域中允许的特定字符。但是,我个人对此类问题的看法是在捕获时更加开放,并且在以后的过滤时更加强硬......这使您可以密切关注人们可能正在尝试的内容,因为您永远无法 100% 确定您的验证不会阻止有效请求 -除非您有大量的用户测试人员供您使用。归根结底,这一切都取决于使用此代码的位置,因此以上只是一个说明性示例。

于 2013-06-10T10:11:25.587 回答