0

我有这个用于 url 重写的正则表达式:

<from>^/page/([0-9]+)/order/(.*)/by/(.*)/composition/(.*)/location/(.*)/price_min/(.*)/price_max/(.*)/industry/(.*)/type/(.*)$</from>
<to>/page=$1&order=$2&by=$3&composition=$4&location_id=$5&price_min=$6&price_max=$7&industry_id=$8&type_id=$9</to>

我想匹配一个像下面这样的 URL,但是没有匹配。

/page/2/order/id/by/desc/composition/1/location/none/price_min/2/price_max/2/industry/2/type/3

4

1 回答 1

1

考虑使用以下一种:

^/page/([0-9]+)/order/(.+?)/by/(.+?)/composition/(.+?)/location/(.+?)/price_min/(.+?)/price_max/(.+?)/industry/(.+?)/type/(.+?)$

你的正则表达式有两件事:

  1. 您应该使用.+而不是,因为和.*之间总会有数据。 //
  2. 您应该添加?,这意味着它将是非贪婪的。它与写作等价([^/]+),这意味着匹配除/多次之外的任何字符多次
于 2013-02-14T00:13:17.630 回答