我想要获得的一个例子:
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'
有什么建议吗?
答案 0 :(得分: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" }
答案 1 :(得分: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];
答案 2 :(得分: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);
答案 3 :(得分:0)
根据您的使用情况,执行直接拆分可能不是一个好主意 - 例如,上述代码如何处理.com
甚至只是localhost
?在这方面,我会走RegExp
路线:
function stripSubdomains( str ){
var regs; return (regs = /([^.]+)(\.co)?(\.[^.]+)$/i.exec( str ))
? regs[1] + (regs[2]||'') + regs[3]
: str
;
};
在正则表达警察 攻击之前因为不够具体而责备我,免责声明:
上述内容可以通过检查域名来加强,而不是检查
^.
,以检查域中允许的特定字符。然而,我个人对这些事情的看法是在捕获时更加开放,并且在以后的过滤点更加强硬......这可以让你留意人们可能会尝试的东西,因为您永远无法100%确定您的验证不会阻止有效请求 - 除非您有大量用户测试人员可供您使用。在一天结束时,这一切都取决于此代码的使用位置,因此以上仅为示例。