正则表达式仅匹配末尾没有连字符和四位数字的 URL

Regular expression matching only URLs not having hyphen and four digits at the end

我正在尝试为产品 URL 创建 IIS 重写规则。此规则的正则表达式应仅由 URL 匹配,如下所示:

catalog/products/gl1800-airbag.aspx

catalog/products/cab2.aspx

URL 喜欢

catalog/products/gl1800-airbag-2007.aspx

catalog/products/cab2-2007.aspx

不应该匹配。 URL 的最后部分可以有多少连字符并不重要,只是不能以“-0000”(年)之类的结尾。 我不擅长正则表达式,只能做到这一点:

catalog/products/([^/-0-9]+)\.aspx$

第二个 URL 将匹配它,但第一个不匹配。我不确定如何在这里设置位数,即使我的正则表达式是正确的。

您可以使用

catalog/products/(?![^/]*\d{4}\.)([^/]+)\.aspx$

regex demo

[^/]+ 将匹配除 / 之外的 1 个或多个字符,而 (?![^/]*\d{4}\.) 否定先行一旦在 [=14= 之前找到 4 个数字,匹配就会失败].