Javascript 基于删除URL的最后一部分

Javascript 基于删除URL的最后一部分,javascript,jquery,regex,Javascript,Jquery,Regex,我需要使用javascript/jquery删除URL中可能出现的任何产品编号 URL如下所示: 01-012-15_1571884 url的最后一部分总是用2位数字加-,来格式化,所以我想正则表达式可以完成这项工作?我需要在最后一次/之后删除所有内容 当产品出现在层次结构中的较高或较低位置时,也必须有效,即: 到目前为止,我已经尝试了location.pathname和splits的不同解决方案,但我一直在研究如何处理产品层次结构中的差异和处理数组。使用lastIndexOf查找“/”的最后一

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

URL如下所示: 01-012-15_1571884

url的最后一部分总是用2位数字加-,来格式化,所以我想正则表达式可以完成这项工作?我需要在最后一次/之后删除所有内容

当产品出现在层次结构中的较高或较低位置时,也必须有效,即:


到目前为止,我已经尝试了location.pathname和splits的不同解决方案,但我一直在研究如何处理产品层次结构中的差异和处理数组。

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

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:

这是一个非常好的在线正则表达式测试工具,用于测试正则表达式:


这里有一种方法可以正确处理没有您要求的产品ID的情况


虽然通常不是不正确的,但是如果产品ID位于URL的其他位置,而不是在末尾,这种方法不会替换产品ID。如果没有选择任何产品,它还会删除URL的“部分”部分,这通常是困扰我的问题。
var x = "http://www.mysite.com/section1/section2/section3/section4/01-012-15_1571884";
console.log(x.substr(0,x.lastIndexOf('/')));
var url = 'http://www.mysite.com/section1/section2/section3/section4/01-012-15_1571884';

parts = url.split('/');
parts.pop();
url = parts.join('/');
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) );