Javascript正则表达式错误“/?/:“没有什么可重复的”;早些时候效果不错

Javascript正则表达式错误“/?/:“没有什么可重复的”;早些时候效果不错,javascript,regex,string,Javascript,Regex,String,我正试图清除一个字符串中的任何无效字符,将其设置为目录。 尝试了许多方法,这个方法最终成功了[自定义编码],但现在不行了,它在控制台中说“无需重复”。这是什么意思?使用铬 下面是代码(使用随机字符串): var someTitle=“wa?”; var cleantTitle=cleantTitle(someTitle); 功能名称(标题){ 变量障碍=[“\\”、“/”、“:”、“*”、“?”、“”、“”、“|”]; var溶液=[92,47,58,42,63,34,60,62124]; va

我正试图清除一个字符串中的任何无效字符,将其设置为目录。 尝试了许多方法,这个方法最终成功了[自定义编码],但现在不行了,它在控制台中说“无需重复”。这是什么意思?使用铬

下面是代码(使用随机字符串):

var someTitle=“wa?”;
var cleantTitle=cleantTitle(someTitle);
功能名称(标题){
变量障碍=[“\\”、“/”、“:”、“*”、“?”、“”、“”、“|”];
var溶液=[92,47,58,42,63,34,60,62124];
var encodedTitle=标题;
对于(var阻塞=0;阻塞<阻塞.长度;阻塞++){
var char=障碍物[障碍物];
if(encodedTitle.includes(char)){
var enCode=“\uuuuu i!\uuuuu”+解决方案[障碍物]+“\uuuuu!i\uuuuuuu”;
var rEx=新的RegExp(char,“g”);
encodedTitle=encodedTitle.replace(rEx,enCode);
}
}
控制台日志(“干净:+标题);
log(“编码:”+encodedTitle);
返回编码标题;
}
错误如下:

未捕获的语法错误:无效的正则表达式:/?/:无 重复


它指向这一行->
var rEx=new RegExp(char,“g”);
是一个正则表达式修饰符。当您想要查找它(并用它构建正则表达式)时,您需要转义它。 Being说,无害的无用转义不会伤害其他搜索参数(或者使其他搜索参数可用,因为其中有许多修改器或保留字符)。所以继续吧

var char = '\\' + obstructions[obstruction];

用(对于正则表达式)字符串表示形式替换它们不是有效的正则表达式。要使其成为正则表达式,需要
/\?/

ReEX在这里会很尴尬,因为大多数字符都需要逃逸。相反,考虑使用文字字符串替换,直到它不再被发现:

while( encodedTitle.indexOf(char) > -1) {
    encodedTitle = encodedTitle.replace(char,enCode);
}

在正则表达式中将某些字符用作文本时,需要对其进行转义。其中包括数组中的大多数字符

如果您的函数用ASCII码(以及一些包装的
\uui!\uu
)替换障碍字符,我建议您使用一个正则表达式和一个传递给
.replace()
的回调来执行替换,从而使您的函数更加简洁:

函数cleanTitle(标题){
返回标题。替换(/[\\/:*?“|]/g,函数(ch){
返回“\uuui!\uuuuu”+ch.charCodeAt(0)+”\uuuuu!i\uuuu”;
});
}  
var someTitle=“wh*r*是他的吗?”;
var结果=cleanTitle(someTitle);

控制台日志(结果)这没什么帮助,把它放在这行更好:var rEx=newregexp('\\'+char,“g”);啊,我不在乎你的
if
声明@LlamaObamaThanks!它起作用了!!
while( encodedTitle.indexOf(char) > -1) {
    encodedTitle = encodedTitle.replace(char,enCode);
}