删除URL中的最后一个目录

时间:2013-05-25 14:31:41

标签: javascript regex url path replace

我正在尝试删除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

我应该使用什么样的正则表达式来做这件事?

5 个答案:

答案 0 :(得分:30)

说明:按“/”分解,用pop删除最后一个元素,再次用“/”连接。

function RemoveLastDirectoryPartOf(the_url)
{
    var the_arr = the_url.split('/');
    the_arr.pop();
    return( the_arr.join('/') );
}

请参阅小提琴http://jsfiddle.net/GWr7U/

答案 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, '..'));