正则表达式匹配子匹配没有一些单词

时间:2016-08-31 15:15:26

标签: regex .htaccess iis url-rewriting

我想写RewriteRule,URL的某些部分不应该以特定的单词结尾。

网址如:

/en/drivers/drivername/play

但我希望(drivername)部分不是“以特定词语结尾,例如”排除“或”禁止“

换句话说,我想跟随URL工作:

/en/drivers/drivername/play

但是没有工作:

/en/drivers/drivername-excluded/play
/en/drivers/drivername-banned/play

但这应该有效:

/en/drivers/driver-excluded-name/play
/en/drivers/driver-banned-test/play

甚至可能吗?

没有排除部分我正在使用:

 ^(en|de)/([^\/]+)/(play|test)?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情,使用否定前瞻:

(en|de)\/([^\/]+)\/driver.+-(?!(excluded|banned)\/).*?\/(play|test)?

我拿了你的正则表达式并插入了处理“drivername”的位

driver.+-(?!(excluded|banned)\/).*?

在这种情况下,(?!(excluded|banned)\/)确保正斜杠之间的“驱动程序”部分不会在下面的正斜杠之前直接以“排除”或“禁止”结束。

https://regex101.com/r/pC8sP3/3

这似乎与您提供的示例一起使用。