2016-10-02 106 views
1

我想让用户在下载文件之前输入文件名。如果文件名不存在,则添加扩展名

如何验证文件名以及如何添加分机.jpg如果用户尚未输入此名称?

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

我不知道如何正确地控制这一点,因为用户可能最终要使用的文件名filename.jp,然后我不知道这是不好的用户体验设计,如果我更改为filename.jpg,而不是filename.jp.jpg

+0

我不认为有一个*正确*回答这个问题(其最新的一部分,无论如何),因为它依赖于主观评价什么更好。就个人而言,我会建议**不**添加任何扩展名并将其留给浏览器来决定。我的第二个首选方法是检查是否提供了一种常用于文件类型的扩展名(例如**。jpg **或** .jpeg **),如果不是,** add **(不能替换!)标准扩展名(这里是**。jpg **)。 – pepak

+0

@mortensen你试过解决方案还是解决了? –

回答

0

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

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

结束,如果没有匹配,那么尝试:

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

如果匹配,那么就意味着用户没有放任何扩展名,所以你应该把.jpg放在最后。

其他的文件名是无效的......注意,我的观察结果是在这两种情况下,在正则表达式中不会有多个句点,如果有句点,那么后面跟着JPG格式,否则不应该有任何时期。 但它可能会根据客户的选择而有所不同。

除了该文件名是无效的,你shold不会返回错误信息

+0

这是一个很差的正则表达式。为什么你要求用户不要在文件名中使用点?简单地使用'。\。jpe?g $'作为正则表达式不是更好吗? – pepak

+0

文件名中的多个点可能会在某些情况下导致问题,主要是使用webapps和upload功能(显然是因为此功能的不正确实施)。我只给了他两个正则表达式,来检测文件名是否完整,或者用户是否还没有尝试过扩展 –