正则表达式仅匹配末尾没有连字符和四位数字的 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$
[^/]+
将匹配除 /
之外的 1 个或多个字符,而 (?![^/]*\d{4}\.)
否定先行一旦在 [=14= 之前找到 4 个数字,匹配就会失败].
我正在尝试为产品 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$
[^/]+
将匹配除 /
之外的 1 个或多个字符,而 (?![^/]*\d{4}\.)
否定先行一旦在 [=14= 之前找到 4 个数字,匹配就会失败].