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

3
如何从文件名中删除非法URL字符,但不要删除文件扩展名上的点?有什么方法可以做到这一点吗?目前我有以下代码:
fileName = "I am a file name + two.doc"
fileName.replace(/[^a-zA-Z0-9-_]/g, ''); // regex that removes illegal characters

但它也会将我想要的.doc中的.删除。我希望有一种方法可以除去非法字符,但保留文件扩展名。这可行吗?
2个回答

13
将文字.\.一起添加:
var fileName = "I am a file name + two.doc";
fileName.replace(/[^a-zA-Z0-9-_\.]/g, ''); // 'Iamafilenametwo.doc'

值得指出的是,在正则表达式中,.字符将匹配任何单个字符,除了换行符(\n)。因此,如果要匹配文字点号,需要对其进行转义,使用\.

另外,\w等价于[A-Za-z0-9_],因此您可以缩短表达式:

/[^\w.]/g

正如hwnd所指出的那样,如果您不想允许文件名中包含其他点字符,可以使用减法:

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

太棒了,谢谢你们! - Unspeakable

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

输入图片说明 输入图片说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接