使用 Javascript 从 URL 字符串获取端口 [重复]

2024-05-05

我想要一个 javascript 函数,它将获取一个 url 作为参数,并返回该 URL 的端口,如下所示:

  • 如果有一个http or https (端口 80 / 443)它不会显示在 url 结构中,但我还是希望它们返回。
  • 如果还有另一个端口,我希望将其返回。

Example:

function myFunction(url){
    something here
    ...
    return port
}

我已经看到使用一些额外的库可以轻松完成此操作,但我不想使用一个。从现在起我就没有使用 js 了,如果有人也能够解释他的解决方案,我将非常感激。


据我所知,你不想使用location作为要从中减去端口的 URL,只需将任何字符串作为 URL。嗯,针对这样的情况,我想出了这个。该函数接受任何字符串(但您可以将其传递给location无论如何,URL 都是一样的):

function getPort(url) {
    url = url.match(/^(([a-z]+:)?(\/\/)?[^\/]+).*$/)[1] || url;
    var parts = url.split(':'),
        port = parseInt(parts[parts.length - 1], 10);
    if(parts[0] === 'http' && (isNaN(port) || parts.length < 3)) {
        return 80;
    }
    if(parts[0] === 'https' && (isNaN(port) || parts.length < 3)) {
        return 443;
    }
    if(parts.length === 1 || isNaN(port)) return 80;
    return port;
}
  • 它从字符串中获取基本 url。
  • 它将基本 url 分成几部分,通过':'.
  • 它尝试解析端口的仅数字部分(端口的最后一个元素)parts数组)转换为整数。
  • 如果 URL 开头为'http' AND端口不是数字或者 URL 部分数组的长度小于 3(这意味着 URL 字符串中没有隐含端口),它返回默认的 HTTP 端口。
  • 同样的事情也适用于'https'.
  • 如果长度是1,这意味着没有提供协议或端口。在这种情况下或者端口不是数字(同样没有提供协议),返回默认值HTTP port.
  • 如果它通过了所有这些测试,那么它只会在函数开头返回它尝试解析为整数的端口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript 从 URL 字符串获取端口 [重复] 的相关文章

随机推荐