使用简单的正则表达式验证浏览器上传文件名和扩展名
Validating browser upload file name and extension with simple regex
我做对了正则表达式。仅适用于火狐浏览器。我将如何制作这种跨浏览器、跨平台的方式。由于它是文件名和扩展名验证,您是对的,我正在使用文件上传控件。
^[a-zA-Z0-9_'.]{3,28}(.pdf|.txt|.doc|.docx|.png|.gif|.jpeg|.jpg|.zip|.rar)$
匹配文件名不能为空[ 3, 28 个字符长]。
扩展必须在组内。
当这在 forefox 中工作得很好时,我假设是因为 fileUpload.value = Firefox 中的文件名.扩展名。它在谷歌浏览器和IE中非常失败。我在启用 .net 正则表达式验证器和客户端脚本的情况下使用上述内容。
我知道如何在服务器上验证它,所以请不要服务器端解决方案。
注意:
谷歌浏览器:
提供文件上传控件值为 c:''fakePath''filename.extension
即:
提供完整路径。
如果您有时有一个完整的路径,但只对文件名感兴趣,则不能使用该^
开始。应该转义的点。
你可以尝试这样的事情:
[^''/]{3,}'.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$
看起来您只能获得Firefox的文件,而其他浏览器则获得完整路径。
我总是会为您的字符串添加一个前缀/
,而不是验证最后一个文件之后的最后一部分/
或'
。
此示例使用前瞻检查文件之前的文件分隔符(或手动添加的/
),并且还允许检查文件名的最大 28 个字符。 请参阅此在线正则表达式测试器:
(?<=[''/])['w'.]{3,28}'.(?:pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$
就目前而言,您的正则表达式会像下面这样验证垃圾:
-
....pdf
-
____pdf
它还拒绝完全有效的文件:
-
i.jpg
-
my-pic.jpg
-
pic.JPG
最简单的方法是分多个步骤验证事物:
-
提取扩展:
'.[a-zA-Z]{3,4}$
-
将扩展小写,并根据可接受的值数组对其进行验证。
( 可选)验证文件名(尽管我建议改为清理它):
[a-zA-Z0-9_-]+(?:'.[a-zA-Z0-9_-]+)*
相关文章:
- TableExport jquery插件:文件名和扩展名问题
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 从安卓设备将图像上传到服务器时,文件扩展名错误
- 有人能告诉我如何在cent-os中打开扩展名为.dat的FIle吗
- 如何从 URL 中获取文件名和扩展名
- 提取扩展名为JS的图像文件名
- 允许上传具有特定文件名和扩展名的文件
- 如何使用 AWS S3 预签名帖子指定带扩展名的文件名
- Javascript 正则表达式将文件名与扩展名匹配
- 带扩展名的文件名验证
- 将文件名替换为路径和扩展名
- 如何在一行JavaScript中添加文件名和文件扩展名之间的随机字符串
- 谷歌图表下载自定义的文件名和扩展名
- 使用multer在node.js(express)中保留上传后的图像文件名和扩展名
- 如何从单个正则表达式验证文件名和文件扩展名
- 使用浏览器将文件保存到本地系统,使用指定的文件名和扩展名html &没有服务器交互的Javascript
- 使用简单的正则表达式验证浏览器上传文件名和扩展名
- 将输出图像保存到另一个目录中,并使用新的文件名和扩展名
- 获取文件的扩展名,但无法获取文件名