我想过滤文件上传器。它在FireFox中运行良好,但在谷歌浏览器中,它总是显示无效文件,尽管文件有效。
function validate() {
var uploadcontrol = document.getElementById('<%=fileupload.ClientID%>').value;
//Regular Expression for fileupload control.
//var reg = /^(([a-zA-Z])|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.jpg|.jpeg|.jpe|.gif|.bmp|.png|.JPG|.JPEG|.JPE|.GIF|.BMP|.PNG)$/;
var reg = /^(([0-9a-zA-Z\^\&\'\@\{\}\[\]\,\$\=\!\-\#\(\)\%\+\~\_ ]))+(.jpg|.jpeg|.jpe|.gif|.bmp|.png|.JPG|.JPEG|.JPE|.GIF|.BMP|.PNG|.dds|.psd|.pspimage|.tga|.thm|.tif|.tiff|.yuv)$/;
if (uploadcontrol.length > 0) {
//Checks with the control value.
if (reg.test(uploadcontrol)) {
return true;
}
else {
//If the condition not satisfied shows error message.
alert("Only Images are allowed!");
return false;
}
}
} //End of function validate.
答案 0 :(得分:1)
这是一个非常奇怪的正则表达式。试试这个
var reg = /^[^\\//]+\.(jpg|jpeg|jpe|gif|bmp|png|dds|psd|pspimage|tga|thm|tif|tiff|yuv)$/i;
这个适合我使用chrome中的各种文件名。
最后的i修饰符将忽略大小写,名称匹配比这更加慷慨。
答案 1 :(得分:0)
您的测试似乎确实在chrome see this fiddle中工作。
因此我认为您需要在chrome和firefox中调试uploadcontrol
的值以查看它们的不同之处,然后调整您的正则表达式。