删除基于的URL的最后部分

时间:2013-09-23 14:23:45

标签: javascript jquery regex

我需要使用javascript / jquery删除网址中可能出现的任何产品编号。

网址如下所示: http://www.mysite.com/section1/section2/section3/section4/ 01-012-15_157188​​4

网址的最后部分总是用2位数字格式化后跟 - ,所以我认为正则表达式可以完成这项工作?我需要在最后一次删除后删除所有内容/.

当产品在层次结构中更高或更低时,它也必须起作用,即:http://www.mysite.com/section1/section2/01-012-15_1571884

到目前为止,我尝试过使用location.pathname和splits的不同解决方案,但我仍然坚持如何处理产品层次结构和处理数组的差异。

5 个答案:

答案 0 :(得分:3)

使用lastIndexOf查找“/”的最后一次出现,然后使用子字符串删除路径的其余部分。

答案 1 :(得分:2)

DEMO

var x = "http://www.mysite.com/section1/section2/section3/section4/01-012-15_1571884";
console.log(x.substr(0,x.lastIndexOf('/')));

答案 2 :(得分:1)

var a = 'http://www.mysite.com/section1/section2/01-012-15_1571884',
result = a.replace(a.match(/(\d{1,2}-\d{1,3}-\d{1,2}_\d+)[^\d]*/g), '');

JSFiddle:http://jsfiddle.net/2TVBk/2/

这是一个非常好的在线正则表达式测试程序,用于测试您的正则表达式:http://regexpal.com/

答案 3 :(得分:1)

var url = 'http://www.mysite.com/section1/section2/section3/section4/01-012-15_1571884';

parts = url.split('/');
parts.pop();
url = parts.join('/');

http://jsfiddle.net/YXe6L/

答案 4 :(得分:0)

这是一种方法,可以正确处理您请求的产品ID的情况。 http://jsfiddle.net/84GVe/

var url1 = "http://www.mysite.com/section1/section2/section3/section4/01-012-15_1571884";
var url2 = "http://www.mysite.com/section1/section2/section3/section4";

function removeID(url) {

    //look for a / followed by _, - or 0-9 characters, 
    //and use $ to ensure it is the end of the string
    var reg = /\/[-\d_]+$/;

    if(reg.test(url))
    {
         url = url.substr(0,url.lastIndexOf('/'));   
    }
    return url;
}

console.log( removeID(url1) );
console.log( removeID(url2) );