Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从文件名中删除非法字符,但保留空格_Javascript_Regex - Fatal编程技术网

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

Javascript 从文件名中删除非法字符,但保留空格,javascript,regex,Javascript,Regex,我有以下代码行用于从文件名中删除非法字符: str= str.replace(/([^a-z0-9]+)/gi, '-'); 这很好,但它也会删除空格,我如何才能只删除非法字符而保留空格?您正在搜索所有非数字和罗马字母。如果要排除要替换的空间,请执行以下操作: 只需在要排除的选择中添加一个空格:) 将“\s”空格添加到排除项中 str = str.replace(/([^a-z0-9\s]+)/gi, '-'); 将列出非法字符。要替换它们,请使用如下正则表达式: var filename

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

str= str.replace(/([^a-z0-9]+)/gi, '-');

这很好,但它也会删除空格,我如何才能只删除非法字符而保留空格?

您正在搜索所有非数字和罗马字母。如果要排除要替换的空间,请执行以下操作:

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


将“\s”空格添加到排除项中

str = str.replace(/([^a-z0-9\s]+)/gi, '-');

将列出非法字符。要替换它们,请使用如下正则表达式:

var filename=“f?:i/le>n%a | m\\e.ext”;
filename=filename.replace(/[/\\?%*:|“]/g,'-');
log(文件名)您可以使用\W+

\W(非单词字符)匹配任何与W不匹配的单个字符(与[^a-zA-Z0-9]相同)
来源:


抱歉,我想我不明白你的意思,你能解释一下吗?你的regexp看起来与不匹配的字符相匹配:a-z中的小写字符、a-z中的大写字符和0-9中的数字,并替换匹配的字符。为了避免替换空格,按照我的建议添加空格将达到您想要的效果,因为您正在尝试匹配
[…]
方括号中未包含的任何内容。是否确定“非法”字符?你的正则表达式说,
\u
和许多其他字符是“非法”的,为什么?只需将空格添加到类
[^a-z0-9]
,这样就不会匹配(删除)。这些字符取决于操作系统。在Linux下,文件名中可以有任何字符,甚至空格。@Toto我排除了
和``的情况,因为它们并不真正非法!
str = str.replace(/([^a-z0-9\s]+)/gi, '-');
str = str.replace(/(\W+)/gi, '-');