我想在javascript中使用一个函数作为参数获取url并返回该URL的端口,如下所示:
http或https (端口80/443),它将不会显示在url结构中,但我还是希望它们返回.例:
function myFunction(url){
something here
...
return port
}
Run Code Online (Sandbox Code Playgroud)
我已经看到使用一些额外的库可以很容易地做到这一点,但我不想使用它.从现在开始我没有和js一起工作,如果有人能够解释他的解决方案,我真的很感激.
小智 5
从我得到的,你不想location用作从中减去端口的URL,只是作为URL的任何字符串.好吧,我想出了这个案例.这个函数接受任何字符串(但你可以传递它的locationURL,它的工作方式相同):
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;
}
Run Code Online (Sandbox Code Playgroud)
':'.parts数组的最后一个元素)解析为整数.'http' AND开头,则端口不是数字,或者URL部件数组的长度小于3(这意味着URL字符串中没有隐含端口),它将返回默认的HTTP端口.'https'.1,则表示没有提供协议或端口.在这种情况下或者在端口不是数字的情况下(同样,没有提供协议),返回默认HTTP端口.