我正在尝试删除URL的最后一个目录部分。我的网址如下所示:
https://my_ip_address:port/site.php?path=/path/to/my/folder
。
单击按钮时,我想将其更改为
https://my_ip_address:port/site.php?path=/path/to/my
。 (删除最后一部分)。
我已经尝试了window.location.replace(/\/[A-Za-z0-9%]+$/, "")
,结果是
https://my_ip_address:port/undefined
。
我应该使用什么样的正则表达式来做这件事?
答案 0 :(得分:30)
说明:按“/”分解,用pop删除最后一个元素,再次用“/”连接。
function RemoveLastDirectoryPartOf(the_url)
{
var the_arr = the_url.split('/');
the_arr.pop();
return( the_arr.join('/') );
}
答案 1 :(得分:8)
通过使用此代码,从Url链接中删除最后一个元素。
$(function() {
var scntDiv = $('#p_scents');
var i = $('#p_scents p').size() + 1;
$('body').on('click','#addScnt',function(e) {
e.preventDefault();
$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
i++;
});
$('body').on('click','#remScnt',function(e) {
e.preventDefault();
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
});
});
答案 2 :(得分:0)
这里有一些代码可以正确处理/
,“”,foo
和/foo
(返回/
,“”,foo
和{{ 1}}):
/
只需删除function parentDirectory(dir: string): string {
const lastSlash = dir.lastIndexOf('/');
if (lastSlash === -1) {
return dir;
}
if (lastSlash === 0) {
return '/';
}
return dir.substring(0, lastSlash);
}
s for Javascript。也许您想要不同的行为,但您至少应该考虑这些极端情况。
答案 3 :(得分:0)
选择本机库,dirname
可能会有所帮助。
在node
(后端)中
const path = require('path')
let str='https://my_ip_address:port/site.php?path=/path/to/my/folder'
console.log(path.dirname(n))
console.log(path.dirname(n)+'/')
输出为
'https://my_ip_address:port/site.php?path=/path/to/my'
'https://my_ip_address:port/site.php?path=/path/to/my'
在Firefox浏览器中(请参见MDN, Path Manupluation, OS.Path.dirname])
let str='https://my_ip_address:port/site.php?path=/path/to/my/folder'
console.log(OS.path.dirname(n))
console.log(OS.path.dirname(n)+'/')
对不起,但找不到Chromium的任何东西,但也许我看起来还不够努力。
答案 4 :(得分:0)
另一种删除目录路径结尾的方法:
path.normalize(path.join(thePath, '..'));