【发布时间】:2014-02-21 17:21:17
【问题描述】:
我想从 url 中提取一些具有以下格式的数据:
http://www.example.com/biglasses/pr?p[]=ets.ideal_for%255B%255D%3Ds&p[]=ets.ideal_for%255B%255D%3Dn&p[]=sort%3Dpopularity&sid=23426x&offer=bigglassesMin30_RipoP.&ref=8be2b7f4-521c-4c45-9021-33d1df588eb9&mycracker=ch_vn_men_sungla_promowidget_banner_0_image
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
http://www.example.com/biglasses/pr?p[]=ets.ideal_for%255B%255D%3Ds&p[]=ets.ideal_for%255B%255D%3Dn&p[]=sort%3Dpopularity&sid=23426x&ref=8be2b7f4-521c-4c45-9021-33d1df588eb9&mycracker=ch_vn_men_sungla_promowidget_banner_0_image&offer=bigglassesMin30_RipoP.
基本上我想摆脱 &myCracker 及其值和 &ref 及其值和域名部分,即http://www.example.com
可以看出,url 数据的有用部分散布在这些字符之间,即 &myCracker 及其值和 &ref 及其值。
我正在尝试这样:
var mapObj = {"/^(http:\/\/)?.*?\//":"","(&mycracker.+)":"","(&ref.+)":""};
var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
url = url.replace(re, function(matched){
return mapObj[matched];
});
这样我就可以一次用空字符串替换所有匹配的部分。
但它不起作用。
我知道我需要有选择地删除 url 的这些部分,而不对它们的出现顺序做任何假设,但我应该如何去做。
谢谢
【问题讨论】:
-
您是要在 URL 中保留 &ref 和 &mycracker 的值,还是同时删除它们
-
我想删除 &mycracker 和 &ref 的值及其值部分。对不起,我已经编辑了我的问题。
-
太棒了。 &ref 和 &mycracker 是否会始终位于 URL 的末尾并且彼此相邻,或者这些可能会改变吗?
-
不,位置不是固定的,URL 的一部分,即(&offer 及其值)可能会出现在它们之后。我需要它进行进一步处理。
标签: javascript regex url