我正在使用JQuery File上传插件,为选项接受文件赋值我需要正则表达式,它将告诉要限制的文件类型是什么。我需要通过使用以下表达式来限制我实现的exe和js
(\.|\/)(!exe|!js)$
但这是表达式不允许其他文件,然后我尝试添加一个扩展名如下
(\.|\/)(!exe|!js|pdf)$
使用Above正则表达式,它只接受pdf而不接受exe和JS。现在我需要启用除exe和js之外的所有文件扩展名。将所有扩展添加到表达式将很困难。我们可以在表达式中提到一些如何接受除上面类似格式的exe和js之外的其他文件类型。这个正则表达式适用于JS。
谢谢,
维奈
答案 0 :(得分:14)
这将排除字符串末尾的.js
和.exe
,但允许其他任何内容:
/^[^.]+$|\.(?!(js|exe)$)([^.]+$)/
细分:
^[^.]+$
匹配任何没有点的字符串\.(?!(js|exe)$)([^.]+$)
或js
的情况下,exe
才会匹配一个点。允许以下内容:
something.js.notjs
somethingelse.exee
/something.js/foo
不允许以下内容:
jquery.js
outlook.exe
注意:排除某些文件扩展名不能替代安全性,即使它是JS和EXE文件也不是一个全面的黑名单。如果您排除某些扩展程序的目的是保护您的服务器或用户,请考虑上传后的白名单扩展名和文件数据的完整验证。
答案 1 :(得分:1)
您正在寻找使用(?!pattern)语法。此外,在陈述您想要匹配的内容时,您并未说明应该匹配的内容。所以这应该可以解决问题:
(\.|\/)(?!exe|js).*$
这就是说“匹配任何点(。),只要它没有跟'exe'或'js',然后匹配你想要的任何东西。”
答案 2 :(得分:0)
我不知道这项工作与否,但99%这将有助于你排除这个exe或js扩展使用以下模式
/\.(exe|js)$/ig
当文件在黑名单中时,以下代码为TRUE。否则给你错误
var result = /\.(exe|js)$/ig.test(filename);
希望这对你有帮助!