如何从文件名中删除非法URL字符,但不删除文件扩展名上的点?有没有办法做到这一点?目前我有这个
fileName = "I am a file name + two.doc"
fileName.replace(/[^a-zA-Z0-9-_]/g, ''); // regex that removes illegal characters
但它也删除了。在.doc我想要的东西将删除除文件扩展名之外的非法字符。有可能吗?
答案 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)