2017-09-26 7 views
0

私はテキスト入力から引用符を消し込みしようとしています。今、私のコードは次のとおりです。JavaScriptで一重引用符が置き換えられていませんか?

string = string.replace(/'/g, '\''); 
string = string.replace(/"/g, '\"'); 

私のアウトプットを交換し、すべての二重引用符を持っていますが、単一引用符が残ります。私は正規表現にかなり自信があり、前にreplace関数に問題はなかった。 mySQLdbがこれを妨害している可能性はありますか?私はそれを掲示して、すぐに直ちに取得しています。このような単純な問題のように思えますが、実際に私は困惑しています。

+0

チャンスがあり何を仮定することであることを 'アポストロフィーは、実際には「重大なアクセント」、あるいは左|右の「一重引用符」です。これを見てくださいhttps://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html –

答えて

3

文字列リテラル自体でバックスラッシュが消費され、実際の文字列値には含まれないため、

は、代わりに本当にあなたの文字列に1を取得するためにバックスラッシュをエスケープ:

string = string.replace(/'/g, "\\'"); 
string = string.replace(/"/g, '\\"'); 

あなたはもちろん、一回の操作で行うことができます。

string = string.replace(/(['"])/g, "\\$1"); 
+0

ああうわー!私はこの男を見たに違いない。本当にありがとう。質問、置換文字列\\ $ 1は何ですか? –

+0

'$ 1'は、通常の表現(括弧で囲まれています)でキャプチャグループ内で一致したことの逆参照です。だからそれが引用符になります。 '' \\ ''はエスケープされたバックスラッシュなので、リテラルのバックスラッシュです。 – trincot

+0

しました!謝罪、私は答えを選ぶことができず、それは戻って来るために私の心を完全に滑り込ませた –

関連する問題