用于排除文件类型.exe和.js的正则表达式

时间:2014-04-20 04:07:55

标签: javascript regex jquery-file-upload

我正在使用JQuery File上传插件,为选项接受文件赋值我需要正则表达式,它将告诉要限制的文件类型是什么。我需要通过使用以下表达式来限制我实现的exe和js

(\.|\/)(!exe|!js)$

但这是表达式不允许其他文件,然后我尝试添加一个扩展名如下

(\.|\/)(!exe|!js|pdf)$

使用Above正则表达式,它只接受pdf而不接受exe和JS。现在我需要启用除exe和js之外的所有文件扩展名。将所有扩展添加到表达式将很困难。我们可以在表达式中提到一些如何接受除上面类似格式的exe和js之外的其他文件类型。这个正则表达式适用于JS。

谢谢,

维奈

3 个答案:

答案 0 :(得分:14)

这将排除字符串末尾的.js.exe,但允许其他任何内容:

/^[^.]+$|\.(?!(js|exe)$)([^.]+$)/

细分:

  1. ^[^.]+$匹配任何没有点的字符串
  2. 只有在字符串末尾没有\.(?!(js|exe)$)([^.]+$)js的情况下,
  3. exe才会匹配一个点。
  4. 允许以下内容:

    • 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);

希望这对你有帮助!