regex - 验证除特定扩展名之外的所有内容的正则表达式
问题描述
我试图让这个正则表达式工作,以便wildfly
服务器将所有不包含某些扩展的请求重定向到 index.html
regex['^[^.]+$|\.(?!(js|css|svg|ico|jpg|html)$)([^.]+$)'] -> rewrite['/index.html']
问题是现在任何带有双扩展名的东西,例如.min.css
or.min.js
都会使正则表达式失败。
我尝试了以下方法,但没有奏效:
regex['^[^.]+$|\.(?!(js|css|svg|ico|jpg|html|min\.css|min\.js)$)([^.]+$)'] -> rewrite['/index.html']
非常感谢任何帮助和指导
解决方案
在以下假设下
- 输入是一个 URL 路径
- 查询字符串不是输入的一部分
- 部分匹配不计算在内,必须匹配完整输入,
我会去
^(.*\.(?!js|css|svg|ico|jpg|html))?[^.]*$
这个怎么运作:
- 贪婪的星
.*
立即前进到字符串的末端。 - 点
\.
从字符串末尾回溯到第一个点。 - 前瞻禁止某些文件扩展名。
- 表达式的整个前面部分是可选的,因此我们可以匹配不包含点的字符串。
- 匹配字符串的
[^.]*$
其余部分(允许的文件扩展名)以实现整体匹配。
推荐阅读
- python - json.dumps 将对象作为字符串而不是 json 传递
- javascript - 我们如何从脚本更改类名
- javascript - Angular Electron & AudioWorklet.addModule() error DOMException: The user aborted a request
- c# - 为非活动代码区域启用智能感知
- python - Kafka python客户端在分配和重新平衡之间交替,不处理数据
- laravel - 在 Laravel 的 http 客户端异常之后做某事
- ios - AVPlayer 视频预览问题 iOS 14.0.1
- javascript - d3.js 中点前面的线
- graph-algorithm - 如果降低特定的边缘成本,判断 MST 是否会改善的简单方法?
- r - 月转虚拟变量