You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery文件扩展名验证失效:带括号的有效Excel文件无法通过

问题解决:含括号的Excel文件上传验证失败

你的验证代码失败的原因是正则表达式允许的字符集合未包含括号(和),导致带这类符号的文件名无法通过匹配。

方案一:修正正则表达式

在正则的允许字符集中添加(和)即可解决问题,修改后的代码如下:

function isFileValid() {
    var allowedFiles = [".xlsx", ".xls"];
    //  var allowedFiles = [".xls"];
    var fileUpload = document.getElementById("MainContent_fluploadData");
    var fileChanged = fileUpload.value !== window.lastUploadedFilename;
    window.lastUploadedFilename = fileUpload.value;
    // 新增括号()到允许的字符集合中
    var regex = new RegExp("([a-zA-Z0-9\s_\\.\-:()])+(" + allowedFiles.join('|') + ")$");

    if (!regex.test(fileUpload.value.toLowerCase()) && fileUpload.value !== '') {
        alert("Please upload files having extensions: " + allowedFiles.join(', ') + " only.");
        $('#MainContent_fluploadData').val('');
        return false;
    }
}

如果后续需要支持其他特殊字符(如@、&等),直接将对应字符添加到正则的字符集合中即可。

方案二:直接提取文件后缀验证(更健壮)

正则匹配文件名容易遗漏特殊字符,换一种思路:直接提取文件后缀进行校验,无需关心文件名内容,代码更简洁可靠:

function isFileValid() {
    var allowedFiles = [".xlsx", ".xls"];
    var fileUpload = document.getElementById("MainContent_fluploadData");
    var fileChanged = fileUpload.value !== window.lastUploadedFilename;
    window.lastUploadedFilename = fileUpload.value;

    if (fileUpload.value === '') return;
    
    // 提取文件后缀(转换为小写)
    const fileExtension = fileUpload.value.toLowerCase().substring(fileUpload.value.lastIndexOf('.'));
    if (!allowedFiles.includes(fileExtension)) {
        alert("Please upload files having extensions: " + allowedFiles.join(', ') + " only.");
        $('#MainContent_fluploadData').val('');
        return false;
    }
}

内容的提问来源于stack exchange,提问作者Nadeem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:25:22