Javascript拆分字符串只使用最后一个拆分参数

Javascript splitting string using only last splitting parameter

本文关键字:拆分 最后一个 参数 字符串 Javascript      更新时间:2023-09-26

我想要得到的一个例子:

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'

有什么建议吗?

根据elclars的注释展开:

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" }

try this

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);

我想到的一种方法是

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];

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

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

正则表达式警察

攻击谴责我不够具体之前,一个免责声明:
上面的

可以收紧作为对域名的检查,而不是检查^.,以检查域在那一点上允许的特定字符。然而,我个人对这类问题的看法是,在捕获点更开放,在以后的过滤点更强硬……这可以让你密切关注人们可能在尝试什么,因为你永远不能100%确定你的验证没有阻止有效的请求。,除非你有一群用户测试人员在你的处置。在一天结束的时候,这一切都取决于在哪里使用这些代码,所以上面只是一个说明的例子。