2013-12-10 75 views
-1

jQuery-File-Upload及其basic-plus.html演示文件中有文件擴展名的正則表達式。正則表達式的文件擴展名,如何理解它

/(\.|\/)(gif|jpe?g|png)$/i

(gif|jpe?g|png)$/i - 第二部分是明顯的匹配特定的文件擴展名,不區分大小寫的。

但對於這一部分:

(\.|\/) 

小數點是一個字符,|匹配第一部分或第二部分?

jQuery的文件上傳basic-plus.html

+0

需要注意的是:'(\ | \ /)'是非常糟糕的風格,更好地寫成:''這是更([\ /])高效。第一個表達式是一個紅旗,寫這個擴展名的人有很差的正則表達式知識。 – ridgerunner

回答

3

這一部分:(\.|\/)平均:

  • \.:一個真正的點(逃跑),它是通常點,每一個字符匹配它。
  • |
  • \/斜線(轉義)

所以你追趕:

  • .gif/gif.GIF/GIF ...
  • .jpg/jpg.JPG/JPG,.jpeg,/jpeg.JPEG/JPEG ...
  • .png/png.PNG/PNG ...

這是用來檢查這兩個文件的擴展名(.jpg.gif ...)和Mime類型(image/jpegimage/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'); 
      } 
      ... 
     } 
    } 

}); 
+2

這部分似乎並不需要他。 –

+2

爲什麼擴展檢查正則表達式關心'/ PNG'? – anubhava

+0

點很明顯,但爲什麼斜槓? – Bor

相關問題