Reputation: 89
I have a problem and I cannot seem to solve it.
I have some URL's like this:
I want to remove only \/filter=(\w+)(\/?)
, so only filter=show
but do not include the next forward slash. Also filter
is just a variable.
What I have tried:
var url = 'http://www.example.com/test/filter=show/results=true';
var param = 'filter';
var oldParam = '\/('+param+'=(.*?))';
var reg = new RegExp(oldParam, "gi");
var result = url.replace(reg, "/");
This removes only filter=
and leave out show.
Any help is greatly appreciated.
Upvotes: 0
Views: 107
Reputation: 48837
This should suit your needs:
var url = "http://www.example.com/test/filter=show/results=true";
var param = "filter";
var pattern = "/" + param + "=[^/]+";
var regex = new RegExp(pattern, "gi");
var result = url.replace(regex, "");
document.write(result);
Prints:
http://www.example.com/test/results=true
Explanation:
/filter=[^/]+
Upvotes: 1
Reputation: 1764
try it
var url = 'http://www.example.com/test/filter=show/results=true';
var result = url.replace(/filter=([^&\/]*[/]?)/gi, "");
alert(result);
================= UPDATE ==================
var url = 'http://www.example.com/test/filter=show/results=true';
var params = 'filter';
params = params+'=([^&\/]*[/]?)'
var reg = new RegExp(params, "gi");
var result = url.replace(reg, "");
alert(result);
Upvotes: 2
Reputation: 388406
Try look ahead like
'http://www.example.com/test/filter=show/results=true'.replace(/\/filter=.*?(?=\/)/, '')
Ex:
var url = 'http://www.example.com/test/filter=show/results=true';
var param = 'filter';
var oldParam = '\\/'+param+'=.*?(?=\\/)';
console.log(oldParam)
var reg = new RegExp(oldParam, "gi");
var result = url.replace(reg, "");
console.log(result)
Demo: Fiddle
Upvotes: 2