正则表达式匹配和删除URL中的参数
本文关键字:参数 URL 删除 正则表达式 | 更新日期: 2023-09-27 18:07:22
我有一个url,如localhost:8001/?page=categories&catid=4&p=1888&country=1,2,3,6我想用正则表达式删除&p=1888部分。我怎样才能匹配&用asp.net c#排除这部分吗?
编辑:下面是我为解决方案创建的函数:
public string RemoveUrlParameters(HttpContext Context, string[] Parameters)
{
string result = String.Empty;
UriBuilder urlBuilder = new UriBuilder(Context.Request.Url.AbsoluteUri);
var values = HttpUtility.ParseQueryString(urlBuilder.Query);
for (int i = 0; i < Parameters.Length; i++)
values.Remove(Parameters[i]);
urlBuilder.Query = values.ToString();
result = urlBuilder.ToString();
result = Context.Server.UrlDecode(
result.Replace("http://" + Context.Request.Url.Authority, String.Empty)
.Replace(":80", String.Empty).Replace("default.aspx", String.Empty));
return result;
}
我想用正则表达式
删除&p=1888部分
我建议你使用url解析器,以避免代码的脆弱性,并保证它100%适用于任何有效的url,因为它们尊重rfc:
var url = "http://localhost:8001/?page=categories&catid=4&p=1888&country=1,2,3,6";
var urlBuilder = new UriBuilder(url);
var values = HttpUtility.ParseQueryString(urlBuilder.Query);
values.Remove("p");
urlBuilder.Query = values.ToString();
var newUrl = urlBuilder.ToString();
用Regex实现一个有效的URL解析器可能相当具有挑战性,而且不值得,特别是当。net框架已经提供了操作URL的工具时。
Regex.Replace(input, @"&p=1888(?=&|$)", string.Empty)