Javascript:如何从文件名中删除非法的URL字符?

时间:2015-11-18 03:09:22

标签: javascript regex

如何从文件名中删除非法URL字符,但不删除文件扩展名上的点?有没有办法做到这一点?目前我有这个

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

但它也删除了。在.doc我想要的东西将删除除文件扩展名之外的非法字符。有可能吗?

2 个答案:

答案 0 :(得分:7)

添加.文字,然后添加\.

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[A-Za-z0-9_]等效,因此您可以将表达式缩短为:

/[^\w.]/g

正如hwnd points out所示,如果您不想在文件名中包含其他点字符,则可以使用减法:

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

答案 1 :(得分:4)

对于Windows文件名,我相信.replace的简化版应该是
.replace(/[\\/:"*?<>|]/g, '')

enter image description here enter image description here