连接/简化RegExp

时间:2018-12-08 20:53:35

标签: javascript regex

我的JavaScript文件中有这个有效的RegExp:

var reA = new RegExp(urlValueToRemove);
var reB = new RegExp('(,&)');
var reC = new RegExp('(,,)');
var reD = new RegExp('(=,)');
var reE = new RegExp('(,$)');

window.history.pushState(null, null, decodeURIComponent(window.location.search).replace(reA, '').replace(reB, '&').replace(reC, ',').replace(reD, '=').replace(reE, ''));

是否可以将其串联/简化,以使我不需要执行replace 5次?

我已经在codereview社区中问过这个问题,但是没有人可用,所以我认为我必须在那儿等几天。

示例

当我在这里有此网址时:

  

http://localhost.com/?color=Red,Blue,Green&size=X,L,M,S

当我现在想从URL中删除Green时,我可以将Green传递给第一个正则表达式reA并将其从URL中删除:

  

http://localhost.com/?color=Red,Blue&size=X,L,M,S

1 个答案:

答案 0 :(得分:2)

您可以使用捕获组来指示应保留的内容,并用|将这两种情况结合起来:一种情况需要保留之前的字符(例如{ {1}}),其他紧跟单词(如=):

&