2016-10-02 55 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功能(顯然是因爲此功能的不正確實施)。我只給了他兩個正則表達式,來檢測文件名是否完整,或者用戶是否還沒有嘗試過擴展 –