2015-11-18 77 views
2

如何從文件名中刪除非法URL字符,但不是文件擴展名上的點?有沒有辦法做到這一點?目前我有這個Javascript:如何從文件名中刪除非法的URL字符?

fileName = "I am a file name + two.doc" 
fileName.replace(/[^a-zA-Z0-9-_]/g, ''); // regex that removes illegal characters 

但它也消除了。對.doc我想要的東西,將刪除非法字符,除了文件擴展名。可能嗎?

回答

6

添加.文字以及隨後,\.

var fileName = "I am a file name + two.doc"; 
fileName.replace(/[^a-zA-Z0-9-_\.]/g, ''); // 'Iamafilenametwo.doc' 

值得指出的是,在正則表達式的.字符將匹配any single character except the newline character。因此,你需要逃跑的角色,以便爲它的文字字符匹配,\.

此外,\w是equivilant到[A-Za-z0-9_],所以你能縮短你的表達:

/[^\w.]/g 

而作爲hwnd points out,如果你不希望允許的文件名內的其他點的字符,你可以用減法:

.replace(/(?!\.[^.]+$)\.|[^\w.]+/g, '') 
+0

真棒,謝謝你們! – Unspeakable

1

對於Windows文件名,我相信的一個簡化版本。更換應該是
.replace(/[\\/:"*?<>|]/g, '')

enter image description hereenter image description here

相關問題