使用RegularExpressionValidator进行文件上传不适用于仅使用Firefox的IE

时间:2009-05-01 07:42:12

标签: c# asp.net vb.net validation file-upload

我有一个带有RegularExpressionValidator的FileUpload,其中包含以下验证表达式:

^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.gif|.jpg|.JPG|.JPEG|.GIF|.jpeg|.png|.bmp|.3dm|.3dmf|.ai|.drw|.dxf|.esp|.mng|.png|.ps|.psp|.svg|.tiff)$

这样我确保用户只上传图片。 但由于某种原因,当我使用Firefox时它不起作用。为什么会这样,我该如何解决这个问题?

5 个答案:

答案 0 :(得分:14)

试试这个:

(.*?)\.(jpg|jpeg|png|gif)$

答案 1 :(得分:3)

DaDa针对区分大小写的解决方案的增强:

^(.*?)\.(((j|J)(p|P)(e|E)?(g|G))|((p|P)(n|N)(g|G))|((g|G)(i|I)(f|F)))$

答案 2 :(得分:1)

我找到了解决方案.....

(.*\.([gG][iI][fF]|[jJ][pP][gG]|[jJ][pP][eE][gG]|[bB][mM][pP])$)

Link to the answer

享受!!!

答案 3 :(得分:0)

我已经找到了解决这个问题的方法:

var reg = /([^\s]+(?=.(jpg|gif|png|jpeg)).\2)/gm; 
if (reg.test(uploadcontrol) == false) { 
    alert("Please upload valid image formats(.jpg,.gif,.jpeg and .png)");
}

答案 4 :(得分:-1)

它不适用于Firefox v3.x,因为它不允许JavaScript从文件输入字段获取完整路径名,并且此特定正则表达式希望看到完整路径名。