IIS服务器上的REGEX - 重定向尾部斜杠

时间:2016-02-11 13:39:57

标签: regex iis

这里有正则表达式大师吗?

我试图找到答案,我接近那个: Matching strings not ending with .html 但不幸的是,它并没有满足我的需求:

在IIS 7.5上,想要重定向任何地址而不使用斜杠:

  • 目录
  • 目录/章节

  • 目录/章节/

但不是

  • 目录/
  • 目录/章节/
  • 目录/章节/ anything.any
  • 目录/章节/ anything.any4
  • 目录/章节/ anything.an

(2到4个字符之间的扩展名)

棘手的部分,我需要得到第一组"目录"因为它在条件中用于检查它是否存在于重写表中。 现在,我用第一组获得:((。+?)(?= / | $))

但是,要检查以下内容(如果有的话),我就会陷入困境。

我无法理解如何做到这一点......

非常感谢你的帮助!!!

编辑:

为了更清楚,这就是我想要实现的目标:

  • 目录 ==> MATCH +捕获"目录"在第1组
  • 目录/章节 ==> MATCH +捕获"目录"在第1组
  • 目录/ ==>没有比赛
  • 目录/章节/ ==>没有比赛
  • 目录/章节/ anything.any ==>没有比赛
  • 目录/章节/ anything.any4 ==>没有比赛
  • 目录/章节/ anything.an ==>没有比赛

1 个答案:

答案 0 :(得分:0)

您可以将条件转换为否定前瞻

^([^/]+)(?!.*\.\w+$)(?!.*/$).*$
        ^---- 1----^^-- 2--^

请参阅a regex demo

当URL以文件扩展名结尾时,第一个将失败匹配(\w+$将需要在字符串的末尾出现一个或多个单词字符)。 如果网址以/结尾,则第二个预测将失败。

注意:如果您不使用正则表达式分隔符,则可能不需要在您的环境中转义/