Javascript 正则表达式在google chrome中不起作用

Javascript 正则表达式在google chrome中不起作用,javascript,regex,Javascript,Regex,我想在文件上传器上进行筛选。它在FireFox中运行良好,但在Google Chrome中,它总是显示无效文件,尽管文件是有效的 function validate() { var uploadcontrol = document.getElementById('<%=fileupload.ClientID%>').value; //Regular Expression for fileupload control. //var reg = /^(([a-z

我想在文件上传器上进行筛选。它在FireFox中运行良好,但在Google Chrome中,它总是显示无效文件,尽管文件是有效的

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.
函数验证(){
var uploadcontrol=document.getElementById(“”).value;
//fileupload控件的正则表达式。
//var reg=/^([a-zA-Z])|(\\{2}\w+\$?)(\\(\w[\w].])+(.jpg.jpeg.jpe.gif|.bmp|.png|.jpg|.jpeg|.jpe|.gif|.bmp|.png |;
(0-9a-A-A-A-A-A-A-Z-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-目前目前,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[目前目前目前目前目前目前目前目前来看来看来看来看来看来看((((((([[[[0-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9(是的)$/;;
如果(uploadcontrol.length>0){
//检查控制值。
if(注册测试(上传控制)){
返回true;
}
否则{
//如果不满足条件,则显示错误消息。
警报(“仅允许使用图像!”);
返回false;
}
}
}//函数结束验证。

这是一个非常奇怪的正则表达式。试试这个

var reg = /^[^\\//]+\.(jpg|jpeg|jpe|gif|bmp|png|dds|psd|pspimage|tga|thm|tif|tiff|yuv)$/i;
在chrome中,我可以使用不同的文件名


最后的i修饰符将忽略大小写,名称匹配更像这样。

这是一个非常奇怪的正则表达式。试试这个

var reg = /^[^\\//]+\.(jpg|jpeg|jpe|gif|bmp|png|dds|psd|pspimage|tga|thm|tif|tiff|yuv)$/i;
在chrome中,我可以使用不同的文件名


最后的i修饰符将忽略大小写,名称匹配更像这样。您的测试似乎在chrome中运行


因此,我认为您需要在chrome和firefox中调试uploadcontrol的值,看看它们有什么不同,然后调整您的正则表达式。

您的测试似乎在chrome中运行


因此,我认为您需要调试chrome和firefox中的
uploadcontrol
的值,看看它们有什么不同,然后调整您的正则表达式。

您为什么要进行区分大小写的测试?开始时包含
a-zA-Z
,但有些文件扩展名只允许小写。如果在正则表达式中添加一个
i
标志,它是否解决了问题?如:
var reg=/yourregexhere/i
(这也将简化模式,因为您不需要同时指定
.jpg
.jpg
等)此正则表达式在哪个文件名上失败?你能举个例子吗?需要转义文件扩展名之前的点
,并且该字符类中除
\]-
以外的所有字符都不需要转义。你为什么要进行区分大小写的测试?开始时包含
a-zA-Z
,但有些文件扩展名只允许小写。如果在正则表达式中添加一个
i
标志,它是否解决了问题?如:
var reg=/yourregexhere/i
(这也将简化模式,因为您不需要同时指定
.jpg
.jpg
等)此正则表达式在哪个文件名上失败?你能举个例子吗?需要转义文件扩展名之前的点
,并且该字符类中除
\]-
以外的所有字符都不需要转义。正则表达式在Chrome中“起作用”,因为Chrome完全按照给定的方式正确解释正则表达式。但是,正则表达式不适合OP的情况,除非他特别希望允许大写和小写
jpg
,但只有小写
tif
…同意正则表达式是不可靠的。我只是说,它在Chrome中的工作方式与它在FireFox中所说的操作方式相同。正则表达式在Chrome中的“工作”是指Chrome完全按照给定的方式正确解释正则表达式。但是,正则表达式不适合OP的情况,除非他特别希望允许大写和小写
jpg
,但只有小写
tif
…同意正则表达式是不可靠的。我只是说它在Chrome中的工作方式与它在FireFox中的工作方式相同。