文件上传中的javascript正则表达式和文件类型

标签 javascript regex file-upload

我的页面中有一个文件上传。我定义了一个名为“filetype”的属性。

<input filetype=".jpg|.jpeg|.png" id="attachments" type="file">

我希望当我从文件上传中选择一个文件时,使用 JavaScript 检查文件类型:

    function onSelect(e) {
    if (!e.files[0].extension.match('/' + $("input[type='file']").attr('filetype') + '/i')) {
        alert('file type is wrong');
        e.preventDefault();
    }    
}

现在,当我选择 .jpg 格式的文件时,e.files[0].extension 将是

.jpg

和 '/' + $("input[type='file']").attr('filetype') + '/i' 是

/.jpg|.jpeg|.png/i

但是 e.files[0].extension.match('/' + $("input[type='file']").attr('filetype') + '/i') 返回

null

然后发出火灾警报。 为什么?我如何解决这个问题? 谢谢。

最佳答案

您无法使用连接构建文字正则表达式,您需要使用 RegExp 构造函数。

我建议您执行以下操作:

<input data-filetype="jpg|jpeg|png" id="attachments" type="file">

然后:

function onSelect(e) {
    // "this" is the file input
    // if you attach the function to an event
    // like `$('input:file').change(onSelect)`
    var filetypes = $(this).data('filetype');
    var re = RegExp('\\.('+ filetypes +')$','i');
    if (!re.test(e.files[0].extension)) {
        alert('file type is wrong');
        e.preventDefault();
    }    
}

关于文件上传中的javascript正则表达式和文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23486570/

相关文章:

java - 使用正则表达式删除 JSON 引号

Grails文件上传-如何识别文件和/或内容类型?

javascript - 如何通过在 CasperJs 中填写表单来登录

javascript - 在 NodeJS 中安排一个异步函数

javascript - 正则表达式 - 使用仅匹配数字的量词匹配字符范围

java - CKEDITOR,在jsp页面上传图片

PHP:文件上传 move_uploaded_file() 不工作

javascript - PhoneGap + 谷歌地图 API v3 : Not displaying (at all) on Android

javascript - 如何使用Ember.js的action Helper传递参数?

正则表达式仅匹配正斜杠