匹配包含大写字符且没有文件扩展名的URL

时间:2017-04-11 13:51:52

标签: c# regex iis

寻找标题中描述的帮助 - 我只需匹配在字符串中某处有大写字符的URL并且没有文件扩展名,我希望在表达式中指定。

匹配大写字母段没有问题,但我似乎无法找到找到没有扩展名的方法。

即。这不应该打:

http://www.example.com/upload/campaigns/TOY/img/test-logo.svg

这不应该打

http://www.example.com/upload/campaigns/toy/testpage

但这应该

http://www.example.com/upload/campaigns/TOY/testpage

我有这个atm,目前只选择时段,但我认为它与我实际需要的有些接近。

([A-Z\-_0-9\/\:\.]*\.(?!jpg|jpeg|png|gif))

编辑:我现在有了这个:

([A-Z\-_0-9\/\:\.]*\.(?!.*(?:svg|jpe?g|png|gif)$).*)

我正在对http://regexr.com/进行测试,启用/m会给我预期的结果,所以我需要将其作为表达式的一部分包含在内,还是仅适用于此测试场景?在生产中,表达式将在网址重写中用作单个字符串。

1 个答案:

答案 0 :(得分:1)

您可以使用

([\w/:.-]*\.(?!.*(?:svg|jpe?g|png|gif)$).*)

在您的生产环境中。仅在您测试多行字符串的演示站点上需要/m修饰符。

<强>详情:

  • ( - 捕获第1组匹配:
    • [\ w /:.-] * - zero or more more word chars (letters, digits or _ ), / ,,and - `symbols
    • \. - 一个点
    • (?!.*(?:svg|jpe?g|png|gif)$).* - 如果没有.*svgjpgjpeg,则可以使用任意0个字符(png) }或gif在字符串的末尾
  • ) - 第1组结束。