0

大家好,我正在尝试使用以下代码替换字符串中“+”的所有字符:

var findValue = "+";
var re = new RegExp(findValue, 'g');
searchValueParam = searchValueParam.replace(re, " ");

但是我收到了这个例外:

SyntaxError: Invalid regular expression: nothing to repeat

以前我只应用了 searchValueParam = searchValueParam.replace("+", " "); 但这只会取代第一次出现,而不是全部。

有什么建议么?

4

3 回答 3

3

对于多个替换,您需要使用带有全局 ( g) 修饰符的正则表达式,但是+具有特殊含义(前一项 1 次或多次),因此需要对其进行转义。

searchValueParam = searchValueParam.replace(/\+/g,' ');
于 2013-07-24T15:47:43.503 回答
2

您需要转义+标志:

searchValueParam.replace(/\+/g, " ");
于 2013-07-24T15:47:41.570 回答
1

如果您想保留您拥有的代码,请替换

var findValue = '+';

var findValue = '\\+';

Plus 在正则表达式中具有特殊含义(量词)。这就是为什么我们需要用反斜杠转义它:\+。但是,当您将其放在字符串中时,必须对反斜杠本身进行转义,因为它在字符串中具有特殊含义。这就是我们最终得到'\\+'的方式。

总之,这

var re = new RegExp('\\+', 'g')

相当于这个

var re = /\+/g;
于 2013-07-24T15:53:00.553 回答