示例文本=正則表達式ASP.NET URL重寫
legacycard.ashx?save=false&iNo=3&No=555
樣本模式=
^legacycard.ashx(.*)No=(\d+)
要搶組# 「555」(該值的2值 「否=」 在示例文本)
在Expresso中,這可以工作,但在ASP.NET UrlRewrite中,它並沒有捕捉到。
我錯過了什麼嗎?
謝謝!
示例文本=正則表達式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