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



示例文本=

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

样本图案=

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

想要获取组#2的值"555"(示例文本中的值"No=")

在Expresso中,这可以工作,但是在ASP中。. NET UrlRewrite,它不能捕获。

我错过了什么吗?

谢谢!

我会这样做:

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

?将转义通常分隔URL和参数的问号,然后您确保它将在您实际关心的参数之前捕获每个参数键/值对(任何以&结束的内容)。使用?:可以让您指定一组括号是非捕获的(我假设您不需要任何数据,有可能略微加快正则表达式的速度),并且只捕获555。这种方法的额外好处是,无论参数顺序如何,它都可以工作。

使用这个正则表达式:

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

然后用

替换
${no}

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

legacycard.ashx ?拯救= false&伊诺= 3,没有= 555

不知道为什么要有组,但是组也应该返回

?拯救= false&伊诺= 3,

555年

为更好的措施,你应该知道。在legacycard.ashx也被regex解释,你通常会转义它,在这种情况下,这并不重要,因为一个点匹配一切,也是一个点。:)

试试这个

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

最新更新