在jQuery-File-Upload及其basic-plus.html演示文件中有文件擴展名的正則表達式。正則表達式的文件擴展名,如何理解它
/(\.|\/)(gif|jpe?g|png)$/i
(gif|jpe?g|png)$/i
- 第二部分是明顯的匹配特定的文件擴展名,不區分大小寫的。
但對於這一部分:
(\.|\/)
小數點是一個字符,|匹配第一部分或第二部分?
jQuery的文件上傳basic-plus.html
在jQuery-File-Upload及其basic-plus.html演示文件中有文件擴展名的正則表達式。正則表達式的文件擴展名,如何理解它
/(\.|\/)(gif|jpe?g|png)$/i
(gif|jpe?g|png)$/i
- 第二部分是明顯的匹配特定的文件擴展名,不區分大小寫的。
但對於這一部分:
(\.|\/)
小數點是一個字符,|匹配第一部分或第二部分?
jQuery的文件上傳basic-plus.html
這一部分:(\.|\/)
平均:
\.
:一個真正的點(逃跑),它是不通常點,每一個字符匹配它。|
或\/
斜線(轉義)所以你追趕:
.gif
,/gif
,.GIF
,/GIF
....jpg
,/jpg
,.JPG
,/JPG
,.jpeg
,/jpeg
,.JPEG
,/JPEG
....png
,/png
,.PNG
,/PNG
...這是用來檢查這兩個文件的擴展名(.jpg
,.gif
...)和Mime類型(image/jpeg
,image/gif
。 ..)。
從jquery.fileupload-validate.js
來源提取:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
// The regular expression for allowed file types, matches
// against either file type or file name:
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
...
},
processActions: {
validate: function (data, options) {
...
// Check file.type AND file.name
if (options.acceptFileTypes &&
!(options.acceptFileTypes.test(file.type) ||
options.acceptFileTypes.test(file.name))) {
file.error = settings.i18n('acceptFileTypes');
}
...
}
}
});
需要注意的是:'(\ | \ /)'是非常糟糕的風格,更好地寫成:''這是更([\ /])高效。第一個表達式是一個紅旗,寫這個擴展名的人有很差的正則表達式知識。 – ridgerunner