javascript - 在新的 Regexp 对象中进行匹配分组

标签 javascript regex

我正在尝试使用正则表达式来操作字符串,如下所示:

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/

相关文章:

java - 将字符串拆分为重复的字符

javascript - AngularJS 删除 href

mysql - Impala 正则表达式在管道分隔列表中查找 "2"但不是 "255"

javascript - 如何让JS顺利躲出来,把px改成%?

javascript - 没有时间在窗口卸载时发送获取请求

c++ - 从 std::regex 中提取原始正则表达式模式

java - 根据定界符拆分字符串

Java:如何用一个替换多个回车?

javascript - 使用加载器时扩展 Ractive 组件

javascript - 删除特定宽度的div/iframe