正则表达式不适用于谷歌浏览器

时间:2013-05-17 11:56:42

标签: javascript regex

我想过滤文件上传器。它在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.

2 个答案:

答案 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的值以查看它们的不同之处,然后调整您的正则表达式。