在javascript中使用split仅获取没有查询字符串的URL

Posted

技术标签:

【中文标题】在javascript中使用split仅获取没有查询字符串的URL【英文标题】:Using split to get only the URL without query string in javascript 【发布时间】:2020-01-30 22:06:34 【问题描述】:

我想拆分网站名称并只获取不带查询字符串的 URL 例子: www.xyz.com/.php?id=1

URL 可以是任意长度,所以我想拆分以仅获取 URL xyz.com

能够拆分 URL 并获取 xyz.com/php?id=1 但是我如何结束分裂并只获得 xyz.com

var domain2 = document.getElementById("domain_id").value.split("w.")[1];

【问题讨论】:

Is there any method to get the URL without query string?的可能重复 @Charmander 已经完成了这个,没有找到任何解决方案。 查询字符串是URL的部分;见en.wikipedia.org/wiki/URL。您想要的位(www.xyz.com)是“主机”。 【参考方案1】:

你可以使用:

new URL()

例如——

var urlData = new URL("http://www.example.org/.php?id=1")

urlData.host

只会返回主机名

【讨论】:

我喜欢这样。非常。很多。但是,如果需要从路由页面中获取页面 url,这将不起作用。例如www.xyz.com/users.php?id=1 我正在尝试通过表单获取输入,那么我如何在这个答案中使用 documen.getElementById 呢? 尝试:var domain = new URL(document.getElementById("domain_id").value).host; .host 将包括www.,OP 提到他只想要xyz.com。此外,他的示例 URL 不包含架构(http:// 部分)。 @Titus 我只需要 xyz.com【参考方案2】:

您可以使用带有match 的简单正则表达式以您想要的方式捕获主机:

var url = 'www.xyz.com/.php?id=1';
var host = url.match(/www.(.*)\//)[1];

console.log(host)

【讨论】:

【参考方案3】:

只需将其添加到其他,您也可以使用此正则表达式来捕获所有内容,直到查询字符串“?”像这样;

如果您想在查询字符串之前从 url 中获取任何子页面,这也将起作用

var exp = new RegExp('^.*(?=([\?]))');
var url = exp.exec("www.xyz.com/.php?id=1");
var host = url[0];

console.log(host);

【讨论】:

以上是关于在javascript中使用split仅获取没有查询字符串的URL的主要内容,如果未能解决你的问题,请参考以下文章

Javascript操作Cookie(增,删,改,查)

Javascript正则表达式获取双引号内容

如何仅使用 JavaScript 正确读取 json 文件 [重复]

javascript中slice(),splice(),split(),substring(),substr()使用方法

如何在 Javascript 中获取 HTML 标记内的内容(仅)到单级?

单击仅使用 JavaScript 从 JSON 获取的表数据中的按钮时引用特定行