【问题标题】:Add extension to filename if not already present如果文件名不存在,则将扩展名添加到文件名
【发布时间】:2017-02-10 11:25:16
【问题描述】:

我想让用户在下载文件之前输入文件名。

如果用户尚未输入此文件名,如何验证文件名以及如何添加扩展名 .jpg

所以如果我输入myfilename.jpg,它不应该添加任何东西,但如果我输入myfilename,它应该附加.jpg。如果我输入myfilename.,它应该附加jpg

我不知道如何正确控制它,因为用户最终可能想要使用文件名filename.jp,然后我不知道如果我将其更改为 filename.jpg 而不是这是否是糟糕的用户体验设计filename.jp.jpg?

【问题讨论】:

  • 我认为这个问题没有正确的答案(无论如何它是最新的部分),因为它依赖于对更好的主观评价。就个人而言,我建议添加任何扩展程序,并让浏览器自行决定。我的第二个首选是检查是否提供了文件类型常用的扩展名之一(例如 .jpg.jpeg 在你的情况下),如果没有, 添加(不是替换!)标准扩展名(此处为 .jpg)。
  • @mortensen 你试过解决方案还是解决了?

标签: javascript regex validation file-extension


【解决方案1】:

试试下面的正则表达式,它会寻找完美匹配,只有一个点并以 .jpg 结尾

 /^([^.]*).jpg$/m  

如果不匹配,请尝试:

   /^([^.]*)$/m  

如果匹配,则表示用户没有添加任何扩展名,因此您应该将 .jpg 放在末尾。

否则文件名无效...请注意,我的观察是在这两种情况下,正则表达式中的句点都不能超过一个,如果有句点,则后面跟着 jpg,否则不应该有任何句点时期。 但可能会根据客户的选择而有所不同。

除了文件名无效,您不应返回错误信息

【讨论】:

  • 这是一个非常糟糕的正则表达式。为什么要求用户不要在文件名中使用点?将.\.jpe?g$ 用于正则表达式不是更好吗?
  • 文件名中的多个点在某些情况下可能会导致问题,主要是 webapps 和上传功能(显然是因为此功能的错误实现)。我只是给了他两个正则表达式,以检测文件名是否完整或用户是否根本没有尝试过扩展
猜你喜欢
  • 2022-12-11
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 2021-08-29
  • 2012-12-24
  • 1970-01-01
相关资源
最近更新 更多