我正在尝试使用正则表达式来操作字符串,如下所示:
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])
订单的值应该是变量而不是正则表达式。我找不到在正则表达式语句上插入变量的方法,所以我尝试了下面的代码
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”上放置和删除连字符之间播放
最佳答案
这是你想要的吗:
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);
关于javascript - 在新的 Regexp 对象中进行匹配分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842879/