0

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.

4

3 回答 3

2

试着向前看

'http://www.example.com/test/filter=show/results=true'.replace(/\/filter=.*?(?=\/)/, '')

前任:

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)

演示:小提琴

于 2013-06-25T07:29:45.810 回答
2

试试看

var url = 'http://www.example.com/test/filter=show/results=true';
var result = url.replace(/filter=([^&\/]*[/]?)/gi, "");
alert(result);

================= 更新 ==================

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);
于 2013-06-25T07:30:27.180 回答
1

这应该适合您的需求:

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);

印刷:

http://www.example.com/test/results=true

解释:

/filter=[^/]+

正则表达式图片

在 Debuggex 上实时编辑

于 2013-06-25T07:42:17.783 回答