2

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

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

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

当产品在层次结构中出现更高或更低时,它也必须工作,即:http ://www.mysite.com/section1/section2/01-012-15_157188​​4

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

4

5 回答 5

7

演示

var x = "http://www.mysite.com/section1/section2/section3/section4/01-012-15_1571884";
console.log(x.substr(0,x.lastIndexOf('/')));
于 2013-09-23T14:32:52.933 回答
3

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

于 2013-09-23T14:26:48.710 回答
2
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/

于 2013-09-23T14:34:50.950 回答
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/

于 2013-09-23T14:31:59.900 回答
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) );
于 2013-09-24T04:06:16.453 回答