2012-08-31 84 views
0

嗨,我是新來的正則表達式,所以任何人都可以幫助我嗎?我想刪除窗口文件名中的所有非法字符。這是我使用的正則表達式刪除所有非法字符

(/[^a-zA-Z ')' 0-9\\-]+/g,'')") 

問題是它沒有擺脫括號。例如原來的文件名是

[Yuubin Basha (Akizuki Ryou)] Cheap Thrill (Final Fantasy VII) [English] [Dragonfly] 

,它重命名爲

Yuubin Basha Akizuki Ryou) Cheap Thrill Final Fantasy VII) English Dragonfly 

它不會刪除所有的支架。任何人都可以幫我修復我的正則表達式嗎?

+1

支架和括號不是在一個文件名 –

+1

檢查[這個答案](http://stackoverflow.com無效/ a/6984500/20670) - 檢查非法文件名時需要考慮更多事項。 –

+0

此外,括號和括號在文件名中是完全合法的。我不明白... –

回答

1
/[^a-zA-Z\\)\\(\\]\\[0-9\\-\s]+/g 

正則表達式應該像你的情況

+0

但是如果我想要一個[JSLint認爲沒關係](http://stackoverflow.com/a/3041666/1028230)? ;)另外,來自[上面的@ Tim的評論中的鏈接]的額外信息(http://stackoverflow.com/questions/6984450/a-super-strange-bug-of-os-path-abspath/6984500#6984500 )很好顯示檢查不良文件名似乎更加複雜。 – ruffin

4

Windows上的文件名可以包含除U + 0000至U + 001F和:?*"\/<>|以外的所有Unicode字符。所以你可以使用

[\x00-\x1f:?\\/*"<>|] 

但是還有其他的考慮,例如,文件名不能以空格結尾。

0

檢查出來(/[^a-zA-Z ')' 0-9\\-]+/g,''\)")

相關問題