帮助这个(简单)正则表达式......?

时间:2010-11-27 03:17:10

标签: asp.net regex

我正在使用我的APS.NET应用程序进行URL重写,并且没有太多运气匹配以下正则表达式......

<rewrite url="~/deals/(.+)$" to="~/Deals.aspx?deal_string=$1" />
<rewrite url="~/deals/(.+?)/edit$" to="~/EditDeals.aspx?deal_string=$1" />

我想要一个单独的页面来查看“交易”以编辑“交易”。我希望网址只需在交易中添加“/ edit”即可转到“编辑交易”页面。

目前,所有流量都会转到第一页。

1 个答案:

答案 0 :(得分:1)

问题是,与第二个匹配的任何url也与第一个匹配(使用不同的$ 1捕获)。也许如果你颠倒声明的顺序,它将起作用。如果首先评估第二个和最具体的,那么它应该完成这项工作。

此外,您可以重写表达式,避免捕获中出现斜线字符。

<rewrite url="~/deals/([ˆ/]+)$" to="~/Deals.aspx?deal_string=$1" />
<rewrite url="~/deals/(.+?)/edit$" to="~/EditDeals.aspx?deal_string=$1" />

charset [/] 表示任何字符,但 / 。第一个表达式不再匹配 / deals / hello / edit