Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用简单正则表达式验证浏览器上载文件名和扩展名_Javascript_Regex_Validation_File Upload_Cross Browser - Fatal编程技术网

Javascript 使用简单正则表达式验证浏览器上载文件名和扩展名

Javascript 使用简单正则表达式验证浏览器上载文件名和扩展名,javascript,regex,validation,file-upload,cross-browser,Javascript,Regex,Validation,File Upload,Cross Browser,我把regexp弄对了。仅适用于Firefox。我将如何制作这种跨浏览器、跨平台的方式。由于它是文件名和扩展名验证,你是对的,我使用文件上传控制 ^[a-zA-Z0-9_\.]{3,28}(.pdf|.txt|.doc|.docx|.png|.gif|.jpeg|.jpg|.zip|.rar)$ 匹配文件名不能为空[3,28个字符长] 扩展名必须在组内 当它在forefox中工作时,我认为这是因为firefox中的fileUpload.value=Filename.extension。它在Go

我把regexp弄对了。仅适用于Firefox。我将如何制作这种跨浏览器、跨平台的方式。由于它是文件名和扩展名验证,你是对的,我使用文件上传控制

^[a-zA-Z0-9_\.]{3,28}(.pdf|.txt|.doc|.docx|.png|.gif|.jpeg|.jpg|.zip|.rar)$
匹配文件名不能为空[3,28个字符长]

扩展名必须在组内

当它在forefox中工作时,我认为这是因为firefox中的fileUpload.value=Filename.extension。它在Google chrome和IE中完全失败了。我在启用.net正则表达式验证程序和ClientScript的情况下使用上面的方法

我知道如何在服务器上验证,因此请不要使用服务器端解决方案。

注意:

谷歌浏览器:

提供文件上载控制值,格式为c:\fakePath\filename.extension

即:


提供完整路径。

如果您有时有完整路径,但只对文件名感兴趣,则不能使用
^
开始。应该转义文件的圆点

您可以尝试以下方法:

[^\\/]{3,}\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$

看起来,Firefox只提供文件,其他浏览器则提供完整路径。
我总是在字符串中添加一个前缀
/
,然后验证最后一个文件后面的最后一部分

本例使用lookahead检查文件前面的fileseparator(或手动添加的
/
),还允许检查文件名的最大28个字符。见此:


(?如果您有时有完整的路径,但只对文件名感兴趣,则不能使用
^
开始。文件结束点应转义

您可以尝试以下方法:

[^\\/]{3,}\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$

看起来,Firefox只提供文件,其他浏览器则提供完整路径。
我总是在字符串中添加一个前缀
/
,然后验证最后一个文件后面的最后一部分

此示例使用前瞻检查文件前面的fileseparator(或手动添加的
/
),还允许检查文件名的最大28个字符。请参阅:


(?目前情况下,您的正则表达式验证垃圾,如下所示:

  • …pdf
  • \uuuuu pdf
它还拒绝完全有效的文件:

  • i.jpg
  • my pic.jpg
  • pic.JPG
最简单的方法是分多个步骤进行验证:

  • 提取扩展名:

    \.[a-zA-Z]{3,4}$
    
  • 将扩展名小写,并根据可接受值的数组对其进行验证

  • 可选地验证文件名(尽管我建议将其清理):


  • 目前,您的正则表达式验证垃圾,如下所示:

    • …pdf
    • \uuuuu pdf
    它还拒绝完全有效的文件:

    • i.jpg
    • my pic.jpg
    • pic.JPG
    最简单的方法是分多个步骤进行验证:

  • 提取扩展名:

    \.[a-zA-Z]{3,4}$
    
  • 将扩展名小写,并根据可接受值的数组对其进行验证

  • 可选地验证文件名(尽管我建议将其清理):


  • 请提供一些您尝试匹配的输入的示例,以及它在哪里失败请提供一些您尝试匹配的输入的示例,以及它在哪里失败感谢有价值的解释。此正则表达式现在可以跨浏览器工作。感谢有价值的解释。此正则表达式现在可以跨浏览器工作。