user1642439
user1642439

Reputation: 89

Javascript regex search until but do not include

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

Answers (3)

sp00m
sp00m

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=[^/]+

Regular expression image

Edit live on Debuggex

Upvotes: 1

Mr Jerry
Mr Jerry

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

Arun P Johny
Arun P Johny

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

Related Questions