与可选的单个查询字符串参数匹配的正则表达式
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}&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
错误:
([a-zA-Z-+'?\&=]+)
([a-zA-Z-+'?&=]+)
并且此表达式与 URL ([a-zA-Z-+'?&=]+)
不匹配
在正则表达式 ^music/state/([a-zA-Z-+']+)?$
部分 [a-zA-Z-+']
负责可以在 music/state/
之后找到的所有字符。
像这样:^music/state/([a-zA-Z-+'?&=]+)?$
顺便说一句,您可以使用在线解释器检查正则表达式,例如 http://regexr.com/
此 IIS 重写规则:
<rule name="music search state">
<match url="^music/state/([a-zA-Z-+']+)?$"/>
<action type="Rewrite" url="search.aspx?stateurl={R:1}&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
错误:
([a-zA-Z-+'?\&=]+)
([a-zA-Z-+'?&=]+)
并且此表达式与 URL ([a-zA-Z-+'?&=]+)
在正则表达式 ^music/state/([a-zA-Z-+']+)?$
部分 [a-zA-Z-+']
负责可以在 music/state/
之后找到的所有字符。
像这样:^music/state/([a-zA-Z-+'?&=]+)?$
顺便说一句,您可以使用在线解释器检查正则表达式,例如 http://regexr.com/