与可选的单个查询字符串参数匹配的正则表达式

时间:2015-11-28 18:42:52

标签: regex iis rewrite

此IIS重写规则:

<rule name="music search state">
  <match url="^music/state/([a-zA-Z-+']+)?$"/>
  <action type="Rewrite" url="search.aspx?stateurl={R:1}&amp;t=2" appendQueryString="true"/>
</rule>

网址匹配:
    www.example.com/music/state/north-dakota

但不在网址上:
    www.example.com/music/state/north-dakota?country=usa

我也尝试过:

^music/state/([a-zA-Z-+']+)?^music/state/([a-zA-Z-+']+)

但这些都不适用于这两个网址...我需要在此表达式中更改哪些内容才能在这两个网址上进行匹配?

更新

我尝试扩展表达式的最后一部分,但这两个表达式在IIS中抛出Configuration file is not well-formed XML错误:

  1. ([a-zA-Z-+'?\&=]+)
  2. ([a-zA-Z-+'?&=]+)
  3. 此表达式与网址([a-zA-Z-+'?&amp;=]+)

    不匹配

1 个答案:

答案 0 :(得分:1)

在正则表达式中^music/state/([a-zA-Z-+']+)?$部分[a-zA-Z-+']负责music/state/之后可以找到的所有字符。 这样的事情:^music/state/([a-zA-Z-+'?&=]+)?$

顺便说一下,您可以使用在线翻译检查您的正则表达式,例如http://regexr.com/