正则表达式匹配和删除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;
}

正则表达式匹配和删除URL中的参数

我想用正则表达式

删除&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)