如何使用正则表达式从查询字符串数据中删除项目?

时间:2013-05-03 23:35:54

标签: regex asp-classic query-string

我想使用正则表达式函数根据键从查询字符串中删除项目。

说我有这样的查询字符串:

page.asp?item1=data1&item2=data2&item3=data3

我想调用这样的函数:

newQs = removeQsItem(url, "item2")

...并让该函数返回:

page.asp?item1=data1&item3=data3

...但如果使用第1项或第3项调用,我也需要它才能工作 - 无论它们在查询字符串中的位置如何。

到目前为止我的策略是尝试抓住“requiredItem = {除此之外的任何东西}”。但我真的在用正则表达式语法挣扎,我的大脑即将融化。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

是否必须使用RegEx?你能做一些字符串函数,比如获取给定字符串“item2”的StrPos然后找到下一个&符号的StrPos然后只是SubString那些位置得到“item2 = data2&” (你可能不得不在第二个位置的索引中加1以实际获得&符号吗?)只需要做一个myQueryString.Replace(substringToRemove,“”)来替换那个没有任何东西的子串?

答案 1 :(得分:0)

我不是正则表达的专家,但我一直在努力学习。所以我做了一些研究(以及试验和错误),并想出了这个。其他人可能会让这个更干净。

(\bitem2=[A-Za-z0-9]*&|&\bitem2=[A-Za-z0-9]*$|^\bitem2=[A-Za-z0-9]*$)

我会解释一下。首先,在一个搜索中有3个搜索。

  • 第一个找到你的商品 IF ,然后是&符号& (所以我们可以 删除尾随&)
  • 第二个找到你的项目 IF 它是最后一个项目(所以我们可以 删除前面的&)
  • 最后一项是您的商品是商品。

代码:

  • (this | that)表示OR。匹配此或。
  • \ b 匹配单词boundery。所以我们知道我们匹配一整个词, 而不仅仅是其中的一部分。
  • [A-Za-z0-9] * 匹配零个或多个字母或数字。如果您有空值,则为零。
  • $ 匹配行尾
  • ^ 匹配行的开头