正则表达式可验证除特定扩展名以外的所有内容

时间:2018-08-24 04:07:13

标签: regex wildfly

我正在尝试使此正则表达式正常工作,以便wildfly服务器将不包含某些扩展名的所有请求重定向到index.html

regex['^[^.]+$|\.(?!(js|css|svg|ico|jpg|html)$)([^.]+$)'] -> rewrite['/index.html']

问题是,现在任何带有双扩展名的东西都.min.css.min.js将使正则表达式失败。

我尝试了以下方法,但没有用:

regex['^[^.]+$|\.(?!(js|css|svg|ico|jpg|html|min\.css|min\.js)$)([^.]+$)'] -> rewrite['/index.html']

非常感谢您的帮助和指导

1 个答案:

答案 0 :(得分:3)

根据以下假设

  • 输入的是URL路径
  • 查询字符串不是输入的一部分
  • 部分匹配不计算在内,必须完全匹配输入

我会去

^(.*\.(?!js|css|svg|ico|jpg|html))?[^.]*$

工作原理:

  1. 贪婪的星星.*立即前进到字符串的结尾。
  2. \.从字符串末尾回溯到第一个点。
  3. 前瞻性禁止某些文件扩展名。
  4. 表达式的整个前部是可选的,因此我们可以匹配不包含点的字符串。
  5. [^.]*$与字符串的其余部分(允许的文件扩展名)匹配,以实现整体匹配。