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

Regular expression that matches on optional single querystring parameter

此 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>

URL 的匹配项:
www.example.com/music/state/north-dakota

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

我也试过:

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

但是其中的 none 对两个 URL 都起作用...我需要更改此表达式中的哪些内容才能使其在两者上都匹配?

更新

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

  1. ([a-zA-Z-+'?\&=]+)
  2. ([a-zA-Z-+'?&=]+)

并且此表达式与 URL ([a-zA-Z-+'?&amp;=]+)

不匹配

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

顺便说一句,您可以使用在线解释器检查正则表达式,例如 http://regexr.com/