正则表达式匹配除404和410之外的任何以数字结尾的链接

时间:2015-11-03 11:37:43

标签: regex .htaccess

仍然是Regex的新手,我想知道你是怎么做到的。

我们的想法是匹配任何以/23.../(数字)但不是/410//404/

结尾的链接

目的是将其放在.htacces中,以便将旧页面重定向到410.

每个旧页面的形状为http://www.blabla.com/something/2/ http://www.blabla.com/something/3/等......

所以我已经完成了正在使用的正则表达式,除了它包括404和410而且我不能允许。

^(.*?)\/\d+$ https://regex101.com/r/tD2sX0/2

我对此问题很难,但这不能正常工作,因为它没有捕获我的网址而且我不确定原因。

^(.*?(404|410))\/\d+$ https://regex101.com/r/tD2sX0/4

很乐意接受一些帮助。

1 个答案:

答案 0 :(得分:1)

您可以在负面预测中添加例外:

^(.*?)\/(?!(?:404|410)$)\d+$

请参阅regex demo

前瞻对\d+(= 1位或更多位)应用限制,以使数字序列不能为404410

我正在使用非捕获组,以便保持后引用列表清洁。字符串锚点的$结尾在前瞻中非常重要,因为它只会将排除的数字限制为404410(否则,它也会排除41004 )。