用于ASP.NET url重写的正则表达式

时间:2011-04-07 19:30:04

标签: asp.net regex url-rewriting

示例文字=

legacycard.ashx?save=false&iNo=3&No=555

样本模式=

^legacycard.ashx(.*)No=(\d+)

想要抓取组#2值“555”(示例文本中“No =”的值)

在Expresso中,这可行,但在ASP.NET UrlRewrite中,它没有捕获。

我错过了什么吗?

谢谢!

4 个答案:

答案 0 :(得分:0)

我会沿着这些方向做点什么:

^legacycard.ashx\?(?:.+&)*No=(\d+)

\?将转义通常将URL和参数分开的问号,然后确保它将捕获每个参数键/值对(在&上结束的任何内容)之前你真正关心的参数。使用?:可以指定括号集是非捕获的(我假设你不需要任何数据,有可能略微加速你的正则表达式)而只留下{{1}捕获。这种方法的另一个好处是,无论参数顺序如何,它都能正常工作。

答案 1 :(得分:0)

对我来说很好,你的正则表达式应该匹配整个字符串

  

legacycard.ashx保存=假安培; INO = 3&安培;否= 555

不确定为什么你有团体,但团体也应该返回

  ?

保存=假安培; INO = 3和

  

555

为了更好的衡量,你应该知道。在legacycard.ashx中也被正则表达式解释,你通常会逃避它,在这种情况下它并不重要,因为一个点匹配所有东西,也是一个点。 :)

答案 2 :(得分:0)

试试这个

^legacycard.ashx(\?No=|.*?&No=)(\d+)

这应该有效。

答案 3 :(得分:0)

只需使用此正则表达式:

^legacycard\.ashx\?save=(false|true)&iNo=(?<ino>\d+)&No=(?<no>\d+)

然后正则表达式替换为

${no}