【问题标题】:Blueimp jQuery File Upload Audio/Video restrictionBlueimp jQuery 文件上传音频/视频限制
【发布时间】:2016-08-22 13:47:15
【问题描述】:
谁能告诉我如何限制使用 Blueimp jQuery 文件上传的音频/视频文件上传?
我使用以下选项 acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 找到了白名单,但我想将音频和视频文件列入黑名单而不是白名单。
我尝试了以下方法来否定 .exe 和 .js 文件acceptFileTypes: /(\.|\/)(?!exe|js)$/i,这限制了所有文件类型,无论其扩展名如何。
提前致谢
【问题讨论】:
标签:
javascript
regex
regex-negation
blueimp
regex-lookarounds
【解决方案1】:
你把$放在了错误的地方。如果您想查找除.exe、.js 之外的任何内容,请使用
(\.|\/)(?!(exe|js)$)
Regex Demo
原因:- 前瞻是零宽度断言。这意味着它们不消耗任何字符。在你的正则表达式中
(\.|\/)(?!exe|js)$
您正在使用前瞻检查 . 之后的 exe 或 js。一旦检查,位置就会在. 之后重置。现在您的正则表达式正在使用$ 检查它是否是字符串的结尾。但是还有一个字符,所以它不是字符串的结尾,你的正则表达式对于任何扩展都会失败。
下面,有一些视觉可以解释你的正则表达式(\.|\/)(?!exe|js)$
对于字符串abcd.jpg。 (为了清楚起见,空格)
abcd . jpg
^^ ^^
|| ||
(Matches .) (New position after consuming .)
. 之后的内容是 jpg,不应与 exe 或 js 匹配 到此为止
由于前瞻的宽度为零,因此在检查后面的内容既不是exe 也不是js 后,位置保持在原处
abcd . jpg
^^
||
Check whether its $ i.e. end of string. This is False because we have j. So no match is returned
如果你想将音视频文件加入黑名单,这里是入门
(?:[.\\])(?!(mp3|m4a|wmv|mp4|mkv)$)\w+
Regex Demo