Javascript 将扩展名添加到文件名(如果尚未存在)

Javascript 将扩展名添加到文件名(如果尚未存在),javascript,regex,validation,file-extension,Javascript,Regex,Validation,File Extension,我想让用户在下载文件之前输入一个文件名 如果用户尚未输入此文件名,如何验证文件名以及如何添加扩展名.jpg 因此,如果我输入myfilename.jpg,它不应该添加任何内容,但是如果我输入myfilename,它应该附加.jpg。如果我输入myfilename.,它应该附加jpg 我不知道如何正确地控制它,因为用户可能最终想要使用文件名filename.jp,然后我不知道如果我将其改为filename.jpg,而不是filename.jp.jpg?试试下面的正则表达式,它会寻找完美的匹配,只有

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

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

因此,如果我输入
myfilename.jpg
,它不应该添加任何内容,但是如果我输入
myfilename
,它应该附加
.jpg
。如果我输入
myfilename.
,它应该附加
jpg


我不知道如何正确地控制它,因为用户可能最终想要使用文件名
filename.jp
,然后我不知道如果我将其改为
filename.jpg
,而不是
filename.jp.jpg

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

 /^([^.]*).jpg$/m  
如果没有匹配项,请尝试:

   /^([^.]*)$/m  
如果匹配,则表示用户尚未放置任何扩展名,所以您应该将.jpg放在末尾

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


除此之外,文件名是无效的,您不应该返回错误消息

我认为这个问题没有正确的答案(无论如何,它是最新的部分),因为它依赖于对更好的内容的主观评估。就我个人而言,我建议不要添加任何扩展,而是让浏览器来决定。我的第二个首选选择是检查是否提供了文件类型常用的扩展名之一(例如,在您的情况下为.jpg或.jpeg),如果没有,则添加(而不是替换!)标准扩展名(此处为.jpg)。@mortensen您是否尝试过该解决方案,或者该解决方案是否已解决?这是一个非常糟糕的正则表达式。为什么要求用户不要在文件名中使用点?对regexp使用
\.jpe?g$
不是更好吗?文件名中的多个点在某些情况下可能会导致问题,主要是webapps和upload功能(显然是因为该功能的实现不正确)。我给了他两个正则表达式,用来检测文件名是否完整,或者用户是否根本没有尝试过扩展