我试图使用正则表达式来操纵字符串,如下所示:
string = '?order=age'
var order_regex_asc = /([&?])order=([a-z])/g;
new_string = string.replace(order_regex_asc, '$1order=-$2');
// The code above will result to "?order=-age"
我知道上面的代码会起作用,这就是我需要的那种逻辑
然而
的部分order=([a-z])
订单的价值应该是变量而不是正则表达式。我找不到在regex语句中插入变量的方法,所以我尝试了下面的代码
data = 'age'
string = 'http://example.com?order=age&order=color&order=gender'
order_regex_asc = new RegExp('[&?]order=' + data, 'g')
new_string = string.replace(order_regex_asc, 'Hi I am a new string');
现在我对这段代码的问题是我无法实现匹配分组。我不知道下一步该做什么了。我只想将'?order = age' 更改为'?order = -age' 并记住其价值订单是动态的。它可以是身高,体重等。
Plunkr:https://plnkr.co/edit/nE6MK7PWb54GkXOdIojn?p=preview
请记住,如果您多次点击任何一个按钮,它应该只在GET参数中播放,并在值上删除连字符' age'
答案 0 :(得分:1)
这就是你想要的:
data = 'age'
string = 'http://example.com?order=age&order=color&order=gender'
order_regex_asc = new RegExp('([&?]order=)(' + data +')', 'g')
new_string = string.replace(order_regex_asc, '$1-$2');
console.log(new_string);