大家都试图通过使用以下代码替换字符串中“+”的所有字符:
var findValue = "+";
var re = new RegExp(findValue, 'g');
searchValueParam = searchValueParam.replace(re, " ");
但是我接受了这个例外:
SyntaxError: Invalid regular expression: nothing to repeat
之前我只使用了searchValueParam = searchValueParam.replace(“+”,“”);但这只会替换第一次出现,而不是全部。
有什么建议吗?
答案 0 :(得分:3)
对于多次替换,您需要将正则表达式与全局(g
)修饰符一起使用,但+
具有特殊含义(前一项为1次或更多次),因此需要对其进行转义。
searchValueParam = searchValueParam.replace(/\+/g,' ');
答案 1 :(得分:2)
你需要逃避+
标志:
searchValueParam.replace(/\+/g, " ");
答案 2 :(得分:1)
如果您想保留您的代码,请替换
var findValue = '+';
带
var findValue = '\\+';
Plus在正则表达式中具有特殊含义(量词)。这就是为什么我们需要用反斜杠来逃避它:\ +。但是,当您将其放在字符串中时,反斜杠本身必须进行转义,因为它在字符串中具有特殊含义。这就是我们最终得到'\\ +'的方式。
总之,这个
var re = new RegExp('\\+', 'g')
等同于此
var re = /\+/g;