验证除特定扩展名以外的所有内容的正则表达式
Regex that validates for everything except particular extension names
我正在尝试让这个正则表达式工作,以便 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']
非常感谢任何帮助和指导
在以下假设下
- 输入是 URL 路径
- 查询字符串不是输入的一部分
- 部分匹配不算,必须匹配完整输入,
我会选择
^(.*\.(?!js|css|svg|ico|jpg|html))?[^.]*$
工作原理:
- 贪心星
.*
立即前进到字符串的末尾。
- 点
\.
回溯到字符串末尾的第一个点。
- 前瞻性禁止某些文件扩展名。
- 表达式的整个前面部分是可选的,因此我们可以匹配不包含点的字符串。
[^.]*$
匹配字符串的其余部分(允许的文件扩展名)以实现整体匹配。
我正在尝试让这个正则表达式工作,以便 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']
非常感谢任何帮助和指导
在以下假设下
- 输入是 URL 路径
- 查询字符串不是输入的一部分
- 部分匹配不算,必须匹配完整输入,
我会选择
^(.*\.(?!js|css|svg|ico|jpg|html))?[^.]*$
工作原理:
- 贪心星
.*
立即前进到字符串的末尾。 - 点
\.
回溯到字符串末尾的第一个点。 - 前瞻性禁止某些文件扩展名。
- 表达式的整个前面部分是可选的,因此我们可以匹配不包含点的字符串。
[^.]*$
匹配字符串的其余部分(允许的文件扩展名)以实现整体匹配。