我有以下代码来从文件名中删除非法字符:
我有以下代码来从文件名中删除非法字符:
str= str.replace(/([^a-z0-9]+)/gi, '-');
那个方法可以正常工作,但它也会移除空格,怎样只移除非法字符但保留空格呢?
我有以下代码来从文件名中删除非法字符:
str= str.replace(/([^a-z0-9]+)/gi, '-');
那个方法可以正常工作,但它也会移除空格,怎样只移除非法字符但保留空格呢?
非法字符请查看此处。使用以下正则表达式/[/\\?%*:|"<>]/g
替换它们:
var filename = "f?:i/le> n%a|m\\e.ext";
filename = filename.replace(/[/\\?%*:|"<>]/g, '-');
console.log(filename);
.
和
的情况,因为它们并不真正违法! - ibrahim mahrir您可以使用\W+。
\W(非单词字符)匹配任何不与\w匹配的单个字符(相当于[^a-zA-Z0-9_])
来源: https://www.ntu.edu.sg/home/ehchua/programming/howto/Regexe.html
str = str.replace(/(\W+)/gi, '-');
str= str.replace(/([^a-z0-9 ]+)/gi, '-');
// add a space here -------^
[ .. ]
中未包含的任何内容。 - Pinedastr = str.replace(/([^a-z0-9\s]+)/gi, '-');
[^a-z0-9 ]
中即可,这样它就不会被匹配(删除)。 - user557597