Javascript 要删除url参数,请使用正则表达式
我在编写使用javascript从url中删除以下参数的正则表达式时遇到问题: 价格范围=-# 价格范围=#-# 价格范围=#- 除了最后一个,其他所有的都可以。它不会删除pricerange=40-Javascript 要删除url参数,请使用正则表达式,javascript,regex,Javascript,Regex,我在编写使用javascript从url中删除以下参数的正则表达式时遇到问题: 价格范围=-# 价格范围=#-# 价格范围=#- 除了最后一个,其他所有的都可以。它不会删除pricerange=40- var postUrl = "http://www.test.com/directory/?cat=203604&pricerange=-10&pricerange=10-20&pricerange=20-30&pricerange=30-40&pricer
var postUrl = "http://www.test.com/directory/?cat=203604&pricerange=-10&pricerange=10-20&pricerange=20-30&pricerange=30-40&pricerange=40-"
postUrl = postUrl.replace(/[&\?]\bpricerange\=[0-9]*-[0-9]*\b/g, "");
结果:
http://www.test.com/directory/?cat=203604&pricerange=40-
预期结果:
http://www.test.com/directory/?cat=203604
这是你的电话号码
url中可能有我不想删除的其他参数。请在删除结尾后重试
\b
或者使用(\b |$)
匹配单词边界或行尾
纠正
如果
cat=203604
是介于pricerange
查询参数之间的某个参数,则正则表达式将无法正常工作
例如:
http://www.test.com/directory/?pricerange=-10&cat=203604&pricerange=10-20&pricerange=20-30&pricerange=30-40&pricerange=40-
输出:(查询参数应该由谁启动?)
您可以使用&*\bpricerange\=[0-9]*-[0-9]*&*
下面是请在删除结尾后重试
\b
或者使用(\b |$)
匹配单词边界或行尾
纠正
如果
cat=203604
是介于pricerange
查询参数之间的某个参数,则正则表达式将无法正常工作
例如:
http://www.test.com/directory/?pricerange=-10&cat=203604&pricerange=10-20&pricerange=20-30&pricerange=30-40&pricerange=40-
输出:(查询参数应该由谁启动?)
您可以使用&*\bpricerange\=[0-9]*-[0-9]*&*
这里是它必须是正则表达式吗?为了实现这一点,我们要做很多体操。函数将完成以下工作:
function cleaner(url)
{
var parts = url.split("?");
if (parts.length == 2)
{
var comps = parts[1].split('&');
for ( var i = comps.length - 1; i >= 0; --i )
{
if (comps[i].match(/^pricerange=\d*\-\d*$/))
comps.splice(i, 1);
}
if (comps.length > 0)
parts[1] = comps.join('&');
else
parts.splice(1, 1);
}
return parts.join("?");
}
var postUrl = "http://www.test.com/directory/?cat=203604&pricerange=-10&pricerange=10-20&pricerange=20-30&pricerange=30-40&pricerange=40-"
postUrl = cleaner(postUrl);
示例:它必须是正则表达式吗?为了实现这一点,我们要做很多体操。函数将完成以下工作:
function cleaner(url)
{
var parts = url.split("?");
if (parts.length == 2)
{
var comps = parts[1].split('&');
for ( var i = comps.length - 1; i >= 0; --i )
{
if (comps[i].match(/^pricerange=\d*\-\d*$/))
comps.splice(i, 1);
}
if (comps.length > 0)
parts[1] = comps.join('&');
else
parts.splice(1, 1);
}
return parts.join("?");
}
var postUrl = "http://www.test.com/directory/?cat=203604&pricerange=-10&pricerange=10-20&pricerange=20-30&pricerange=30-40&pricerange=40-"
postUrl = cleaner(postUrl);
示例:特别支持第二个版本。另外,在
[&\?]
之后不需要\b
,因此:/[&\?]价格范围\=[0-9]*-[0-9]*(\b |$)/g
是的,您是对的。无需使用\b
,因为[&\?]
已定义为prefix@PaulRoub需要\b
。看看更新后的帖子。OP regex paten中还有一个错误。我想唯一的问题是,如果url是“”那么“?”会留在那里。抱歉,仍然不在那里。这一个不起作用:特别是投票支持第二个版本。另外,在[&\?]
之后不需要\b
,因此:/[&\?]价格范围\=[0-9]*-[0-9]*(\b |$)/g
是的,您是对的。无需使用\b
,因为[&\?]
已定义为prefix@PaulRoub需要\b
。看看更新后的帖子。OP regex paten中还有一个错误。我想唯一的问题是,如果url是“”那么“?”会留在那里。抱歉,仍然不在那里。这个不行,谢谢。这也是一个很好的建议。可能更容易维护。谢谢。这也是一个很好的建议。可能更容易维护。