我想要一个 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(使用前将#替换为@)