我需要使用javascript / jquery删除网址中可能出现的任何产品编号。
网址如下所示: http://www.mysite.com/section1/section2/section3/section4/的 01-012-15_1571884
网址的最后部分总是用2位数字格式化后跟 - ,所以我认为正则表达式可以完成这项工作?我需要在最后一次删除后删除所有内容/.
当产品在层次结构中更高或更低时,它也必须起作用,即:http://www.mysite.com/section1/section2/01-012-15_1571884
到目前为止,我尝试过使用location.pathname和splits的不同解决方案,但我仍然坚持如何处理产品层次结构和处理数组的差异。
答案 0 :(得分:3)
使用lastIndexOf查找“/”的最后一次出现,然后使用子字符串删除路径的其余部分。
答案 1 :(得分:2)
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('/');
答案 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) );