正则表达式ASP.NET URL重写
问题描述:
示例文本=正则表达式ASP.NET URL重写
legacycard.ashx?save=false&iNo=3&No=555
样本模式=
^legacycard.ashx(.*)No=(\d+)
要抢组# “555”(该值的2值 “否=” 在示例文本)
在Expresso中,这可以工作,但在ASP.NET UrlRewrite中,它并没有捕捉到。
我错过了什么吗?
谢谢!
答
我会做这些方针的东西:
^legacycard.ashx\?(?:.+&)*No=(\d+)
的\?
将逃跑的问号通常分开URL和参数,则确保它会捕捉每一个参数键/值对(任何以&
结尾的东西)在你真正关心的参数之前。使用?:
可以让你指定一组括号是非捕获的(我假设你不需要任何数据,有可能稍微加快你的正则表达式),并且你只需要捕获这些数据。这种方法的附加好处是它可以工作,而不管参数顺序如何。
答
看起来好像没什么问题,你的正则表达式应该将整个字符串
legacycard.ashx匹配?保存=假& INO = 3 &否= 555
不知道为什么你有群,但团体也应该返回
?保存=假& INO = 3 &
和
良好的措施,你应该知道的。在legacycard.ashx
也被正则表达式解释,你通常会逃避它,在这种情况下它不重要,因为一个点匹配所有的东西,也是一个点。 :)
答
试试这个
^legacycard.ashx(\?No=|.*?&No=)(\d+)
这应该工作。
答
只要使用这个表达式:
^legacycard\.ashx\?save=(false|true)&iNo=(?<ino>\d+)&No=(?<no>\d+)
然后正则表达式替换
${no}
可能是你的正则表达式是ungreedy,所以它抓住它匹配**否= 3 **有**否= (\ d +)**。 – 2011-04-07 19:43:19