如何使用Javascript和正则表达式解析url?
我想解析一些URL,其格式如下:-如何使用Javascript和正则表达式解析url?,javascript,regex,url,Javascript,Regex,Url,我想解析一些URL,其格式如下:- var url ="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a" 它不是必要的域名和其他部分将是相同的所有网址的,他
var url ="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a"
它不是必要的域名和其他部分将是相同的所有网址的,他们可以不同,即我在寻找一个通用的解决方案
基本上,我想去掉所有其他东西,只得到部分:
/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p
我想用JavaScript和正则表达式来解析它
我是这样做的:
var mapObj = {"/^(http:\/\/)?.*?\//":"","(&mycracker.+)":"","(&ref.+)":""};
var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
url = url.replace(re, function(matched){
return mapObj[matched];
});
但它会退回这个
http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43pundefined
我在哪里做了不正确的事情?还是有其他更简单的解决方案
var url ="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a";
var newAddr = url.substr(22,url.length);
// newAddr == "/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a"
22
是开始切片字符串的位置
url.length
是要包含多少内容
只要链接上的域名保持不变,这项功能就有效。
22
是开始切片字符串的位置
url.length
是要包含多少内容
只要链接上的域名保持不变,这种方法就有效。为什么不映射一个拆分数组呢 您不需要对URL进行正则化,但必须在循环中运行if语句来删除特定的GET参数。在这种特殊情况下(关键字特殊),您只需将子字符串添加到
索引
“&mycracker”
为什么不映射一个分割数组呢 您不需要对URL进行正则化,但必须在循环中运行if语句来删除特定的GET参数。在这种特殊情况下(关键字特殊),您只需将子字符串添加到
索引
“&mycracker”
您可以使用:
/(?:https?:\/\/[^\/]*)(\/.*?)(?=\&mycracker)/
代码:
var s="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a";
var ss=/(?:https?:\/\/[^\/]*)(\/.*?)(?=\&mycracker)/;
console.log(s.match(ss)[1]);
说明:
var s="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a";
var ss=/(?:https?:\/\/[^\/]*)(\/.*?)(?=\&mycracker)/;
console.log(s.match(ss)[1]);
您可以使用:
/(?:https?:\/\/[^\/]*)(\/.*?)(?=\&mycracker)/
代码:
var s="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a";
var ss=/(?:https?:\/\/[^\/]*)(\/.*?)(?=\&mycracker)/;
console.log(s.match(ss)[1]);
说明:
var s="http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a";
var ss=/(?:https?:\/\/[^\/]*)(\/.*?)(?=\&mycracker)/;
console.log(s.match(ss)[1]);
稍微更改以下代码,您可以检索任何参数:
var url = "http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a"
var re = new RegExp(/http:\/\/[^?]+/);
var part1 = url.match(re);
var remain = url.replace(re, '');
//alert('Part1: ' + part1);
var rf = remain.split('&');
// alert('Part2: ' + rf);
var part2 = '';
for (var i = 0; i < rf.length; i++)
if (rf[i].match(/(p%5B%5D|sid)=/))
part2 += rf[i] + '&';
part2 = part2.replace(/&$/, '');
//alert(part2)
url = part1 + part2;
alert(url);
var url=”http://www.example.com/cooks/cooking-dress-wine/~no order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a“
var re=new RegExp(/http:\/\/[^?]+/);
var part1=url.match(re);
var reside=url.replace(re',);
//警报(“第1部分:”+第1部分);
var rf=剩余分割(“&”);
//警报(“第2部分:”+rf);
var第2部分=“”;
对于(变量i=0;i
稍微更改以下代码,您可以检索任何参数:
var url = "http://www.example.com/cooks/cooking-dress-wine/~no-order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a"
var re = new RegExp(/http:\/\/[^?]+/);
var part1 = url.match(re);
var remain = url.replace(re, '');
//alert('Part1: ' + part1);
var rf = remain.split('&');
// alert('Part2: ' + rf);
var part2 = '';
for (var i = 0; i < rf.length; i++)
if (rf[i].match(/(p%5B%5D|sid)=/))
part2 += rf[i] + '&';
part2 = part2.replace(/&$/, '');
//alert(part2)
url = part1 + part2;
alert(url);
var url=”http://www.example.com/cooks/cooking-dress-wine/~no order/pr?p%5B%5D=sort%3Dfeatured&sid=bks%2C43p&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a“
var re=new RegExp(/http:\/\/[^?]+/);
var part1=url.match(re);
var reside=url.replace(re',);
//警报(“第1部分:”+第1部分);
var rf=剩余分割(“&”);
//警报(“第2部分:”+rf);
var第2部分=“”;
对于(变量i=0;i
但我还是想摆脱&mycracker=ch_vn_clothing\u subcategory\u Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a和我上面的url只是一个指示性url,我希望在所有场景中都使用相同的脚本。但我仍然希望摆脱&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a,我上面的url只是一个指示性url,我希望在所有场景中都使用相同的脚本。但我仍然希望摆脱&mycracker=ch_vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a和我上面的url只是一个指示性的url,我想在所有场景中使用相同的脚本来截断“&mycracker”索引处的url,并且url与您想要的url匹配。但我仍然想摆脱&mycracker=Chu vn_clothing_subcategory_Puma&ref=b41c8097-8efe-4acf-8919-0fa81bcb590a和我上面的url只是一个指示性的url,我想在所有场景中使用相同的脚本来截断“&mycracker”索引处的url,并且url与您想要的url匹配。如果没有cook这个词,解决方案是什么?我的意思是,我构建这个url只是为了让大家了解我所面临的问题。是的,这似乎很好。是的,杰森,我也喜欢它。如果没有库克这个词,解决方案是什么?我的意思是,我构建这个url只是为了让大家了解我所面临的问题。是的,这看起来不错。是的,杰森,我也喜欢它。