我正在尝试为产品网址创建IIS重写规则。此规则的正则表达式应仅与以下URL匹配:
catalog/products/gl1800-airbag.aspx
或
catalog/products/cab2.aspx
。
网址就像
catalog/products/gl1800-airbag-2007.aspx
或
catalog/products/cab2-2007.aspx
不应该匹配。 URL的最后部分可以有多少连字符并不重要,它只能以“-0000”(年)之类的结尾。 我不擅长正则表达式而且只能达到这个目的:
catalog/products/([^/-0-9]+)\.aspx$
第二个网址会与之匹配,但首先不会。我不知道如何在这里设置位数,即使我的正则表达式是正确的。
答案 0 :(得分:1)
您可以使用
catalog/products/(?![^/]*\d{4}\.)([^/]+)\.aspx$
请参阅regex demo
[^/]+
将匹配/
以外的1个或多个字符,(?![^/]*\d{4}\.)
否定前瞻一旦在.
之前找到4个数字,将无法匹配。