2012-12-31 96 views
0

我有一個表單,讓用戶鍵入他們想要的文件名與擴展名下載文件時,但我需要驗證在客戶端(不包含[^/?*:;{}\\]+\\.[^/?*:;{}\\]+,像這樣的東西)。文件名不需要包含擴展名,但可以如果他們希望。我發現這個:Validate a file name on Windows 但我不夠流利的jQuery,使其工作。jQuery使用正則表達式來檢查有效的文件名

+4

這並沒有真正有什麼用jQuery深灰色,它的一JavaScript問題。在這裏,MDN文檔的正則表達式https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp –

+0

我建議使用白名單(而不是黑名單)字符你'允許,這樣管理會更容易一些。 –

+0

@DavidThomas任何合理的文件系統都有一個黑名單,而不是白名單。有些甚至沒有。如果文件系統支持,Linux將允許您將控制字符插入到文件名中。 –

回答

0

正如我的評論所述,它不是一個jQuery問題,它是一個JavaScript的東西,你在追求。

你可以去兩種方式,最簡單的是

var myString = "hello world"; 
var regexp = /w+/ 
var match = regexp.exec(myString); 
console.log(myString); //will print the world "hello" 

其他將使用Regexp Object

簡單,而不是使用「文字正則表達式」,您是否同意這樣稱呼它,使用對象

var re = new RegExp("\\w+"); 
var match = re.exec(myString); 
console.log(myString); //will print the world "hello" 

這個方便的網站是主要面向Ruby的正則表達式,但其創造的正則表達式

的一個很好的工具

Rubular

+2

'/ w + /'(包含一個單詞字符)對於有效的文件名不是一個好的標準。 –

+0

的確如此,但我並不是想要一個完整的解決方案,而是一個指向正確方向的指針,但我可以編輯我的答案。 –

+0

我沒有完全使用這個答案,但像我曾經指出的那樣,謝謝。 – Howes

0

您可以爲此嘗試下面的代碼。這將返回文件名稱,如果有效。否則,它將返回

var filename = ''; // enter your file name here 
alert(filename.match(/^\s*[a-z-._\d,\s]+\s*$/i)) 

如果您想要排除某些字符提及在方括號中的字符如下圖所示

/^[^<>%$]*$/ 
+0

'přílišžluťoučkýkůň.texťák'在您看來是不是有效的文件名?我的文件系統(NTFS @ W7)乞求不同:-) –

+0

看起來像一個編造的語言...;) –

+0

@limelights我認爲匈牙利相同:-)請參見http://en.wikipedia.org/ wiki/List_of_pangrams#捷克語來驗證它是一種真正的語言:-) –