替换JavaScript中的URL字符串中的特定值

时间:2019-01-27 15:23:29

标签: javascript jquery

我有一个具有类似URL的字符串:

var url ="http://ispeakphone.com/checkout/cart/add/uenc/aHR0cDovL2lzcGVha3Bob25lLmNvbS9zYW1zdW5nL3NhbXN1bmctZ2FsYXh5LXMvZ2FsYXh5LXM5LXBsdXMuaHRtbA,,/product/619/form_key/foxmD7jgFv31xmEs/qty/3/?options=cart";

我正在从输入中获得按钮点击的数量,例如:

var qty = jQuery(this).siblings('.quantity-field').val(); // 4 

每次从按钮单击输入中获得新值时,如何将URL字符串"/qty/3/"的数量更改为"/qty/4/"? 我不能简单地查找和替换,因为我不知道/qty/3的确切数字是2,3,4,5 etc

2 个答案:

答案 0 :(得分:1)

这是具有此功能的功能

function changeValue(str,value){
    return str.replace(/\/qty\/[0-9]+\//,`\/qty\/${value}\/`)
}
console.log(url,4);

答案 1 :(得分:0)

您可以使用替换方法。

/qty的回调更改值中,捕获group 1 (g1)中直到group 2 (g2)的所有内容,group 3 (g3)中的所有以下数字,并保留在group 2中,需要。

var url ="http://ispeakphone.com/checkout/cart/add/uenc/aHR0cDovL2lzcGVha3Bob25lLmNvbS9zYW1zdW5nL3NhbXN1bmctZ2FsYXh5LXMvZ2FsYXh5LXM5LXBsdXMuaHRtbA,,/product/619/form_key/foxmD7jgFv31xmEs/qty/3/?options=cart";

let desired = url.replace(/^(.*\/qty\/)(\d+)(.*)$/g, function(match,g1,g2,g3){
  return g1+ (Number(g2)+1) + g3
})

console.log(desired)