关于图片的正则表达式!!

问题描述

例如我有一个数组['mai.jpg','da.png','xiao.gif'],
我要怎么写正则才能匹配到这些图片,让不是这些jpg,png,gif格式的图片不能上传!

问题出现的环境背景及自己尝试过哪些方法

function isImage(str) {
var reg = /w(.png|.jpg|.gif|.bmp|.psd|.tiff|.tga|.eps)/i;
return str.match(reg);
}
这样写仿佛没有效果,望告知

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 13k
4 个回答

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

(.*?)\.(png|jpe?g|gif|bmp|psd|tiff|tga|eps)
匹配任意文件名为这些后缀结尾的格式

如果是用input 控件上传图片你可以这样处理

<input type="file" accept="image/gif, image/jpeg" />

如果不是可以这样处理

``var arr = ['1.jpg','2.png','3.txt'];

        arr.map(function(value,index){
            if(!/\.(png|jpg|gif|svg)(\?.*)?/.test(value)){
                arr.splice(index,1);
            };
        });
        console.log(arr)//['1.jpg','2.png']

这个问题其实有两个方面问题

  1. 如果在input /file 相关组件中通过限定扩展名让只能选择符合条件的文件
  2. 预读file 选择的文件,判断是否符合条件

对于1,应该有很多例子,或者你的扩展名过滤,包括

 <input type="file" name="pic" accept="image/gif,image.jpg" />

之类都是类似的方法。其实他们只判断了文件的扩展名。

对于2,这个一般需要插件才能实现(安全机制)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题