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複数の置換の場合、global ( ) 修飾子で正規表現を使用する必要があります+が、特別な意味 (前の項目が 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 に答える