Javascript 使用简单正则表达式验证浏览器上载文件名和扩展名
我把regexp弄对了。仅适用于Firefox。我将如何制作这种跨浏览器、跨平台的方式。由于它是文件名和扩展名验证,你是对的,我使用文件上传控制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
^[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}$
将扩展名小写,并根据可接受值的数组对其进行验证
可选地验证文件名(尽管我建议将其清理):
请提供一些您尝试匹配的输入的示例,以及它在哪里失败请提供一些您尝试匹配的输入的示例,以及它在哪里失败感谢有价值的解释。此正则表达式现在可以跨浏览器工作。感谢有价值的解释。此正则表达式现在可以跨浏览器工作。