从文件名中删除非法字符,但保留空格

use*_*165 6 javascript regex

我有以下代码行可从文件名中删除非法字符:

str= str.replace(/([^a-z0-9]+)/gi, '-');
Run Code Online (Sandbox Code Playgroud)

效果很好,但它也删除了空格,我如何才能只删除非法字符却留出空格?

ibr*_*rir 11

此处列出非法字符。要替换它们,请使用此正则表达式,/[/\\?%*:|"<>]/g如下所示:

var filename = "f?:i/le>  n%a|m\\e.ext";

filename = filename.replace(/[/\\?%*:|"<>]/g, '-');

console.log(filename);
Run Code Online (Sandbox Code Playgroud)


A-3*_*312 8

您可以使用 \W+

\W(非单词字符)匹配与 \w 不匹配的任何单个字符(与 [^a-zA-Z0-9_] 相同)
来源: https ://www.ntu.edu.sg/home /ehchua/programming/howto/Regexe.html

str = str.replace(/(\W+)/gi, '-');
Run Code Online (Sandbox Code Playgroud)


Pin*_*eda 7

您正在搜索所有非数字和罗马字母。如果要排除被替换的空间:

只需在选择中添加一个空格即可排除:)

str= str.replace(/([^a-z0-9 ]+)/gi, '-');
// add a space here -------^
Run Code Online (Sandbox Code Playgroud)