我正在使用此URL: demo.example.in/posts/0ewsd/13213
我需要从此URL获取主机名( demo.example.in ),后跟路径( posts / 0ewsd / 13213 )
urlHost = 'demo.example.in/posts/0ewsd/13213';
let urlHostName = urlHost.split("/");
我尝试使用 split()方法,但最终拆分了整个URL ...
['demo.example.in', 'posts', '0ewsd', '13213']
我需要得到的是 demo.example.in 和 posts / 0ewsd / 13213 有什么办法吗?
答案 0 :(得分:1)
如果需要,可以使用正则表达式-匹配并捕获/
(主机名)以外的任何内容,然后匹配/
,然后匹配并捕获行(路径)的其余部分。主机名将在第一个捕获的组中,路径将在第二个捕获的组中:
const input = 'demo.example.in/posts/0ewsd/13213';
const [, hostname, path] = input.match(/([^/]+)\/(.*)/);
console.log(hostname, path);
答案 1 :(得分:1)
一种可能的解决方案是使用捕获组将String.match()与下一个正则表达式/^([^/]*)\/(.*)$/
结合使用:
const url = "demo.example.in/posts/0ewsd/13213";
const customSplit = (url) =>
{
let matches = url.match(/^([^/]*)\/(.*)$/);
return [matches[1], matches[2]];
}
let [hostname, path] = customSplit(url);
console.log("hostname => " + hostname);
console.log("path => " + path);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
或者,使用String.split()和Destructuring Assignment,您可以下一步:
const url = "demo.example.in/posts/0ewsd/13213";
const customSplit = (url) =>
{
let [hostname, ...path] = url.split("/");
return [hostname, path.join("/")];
}
let [hostname, path] = customSplit(url);
console.log("hostname => " + hostname);
console.log("path => " + path);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
答案 2 :(得分:1)
var urlHost = 'demo.example.in/posts/0ewsd/13213';
const [host, param] = [urlHost.substring(0, urlHost.indexOf('/')), urlHost.substring(urlHost.indexOf('/') + 1)];
console.log(host, param);
希望这对您有帮助!
答案 3 :(得分:0)
答案 4 :(得分:0)
如果可以在方案的前缀前面加上URL,则可以使用URL API来获取主机和路径。
const url = new URL('http://' + 'demo.example.in/posts/0ewsd/13213');
const host = url.host, path = url.pathname.slice(1);
console.log('Host:', host);
console.log('URL Path:', path);