2016-12-27 91 views
0

我有这样的正则表达式:用正则表达式替换在Javascript

var a = window.location.href.replace(/((.*)[&|?])(sessionid(=[^&]*))([&|#](.*))/, '$1$5'); 

,从一个例子URL删除会话ID是这样的:

http://...&parent_location=Test&abc=123&sessionid=q26bh6bkm8g49aeopem2obdm87igrsfe&... 

结果将是:

http://...&parent_location=Test&abc=123&&... 

我的问题是,如果在那个替换我可以添加替换也为parent_location

+0

什么是您预期的输出? – anubhava

+4

1.将URL /查询字符串解析为数组/对象。 2.根据需要操作数据。 3.重新格式化为一个URL。 - 比regexen好得多。 – deceze

+0

此结果:http://...&& abc = 123 && ...我也不想删除parent_location查询字符串,将不胜感激也删除&不需要 – Piero

回答

2

使用单个正则表达式与不必要的捕获组删除。

str.replace(/([&?])(?:sessionid|parent_location)=[^&#]*(?=[&#]|$)/m, '$1') 

DEMO

+0

不能使用灰标记http:// ...&parent_location = Test&abc = 123&sessionid = q26bh6bkm8g49aeopem2obdm87igrsfe#abc/abc should remain:http://...&abc=123#abc/abc – Piero

+0

只需在第一个字符类中添加'#'..即[&? #]' –

0

您可以在一行中添加几个.replace方法。

var a = window.location.href 
    .replace(/((.*)[&|?])(sessionid(=[^&]*))([&|#](.*))/, '$1$5') 
    .replace(/*statement*/);