43

JavaScript 変数が評価されるプロジェクトがあります。文字列をエスケープする必要があるため (一重引用符のみ)、テスト関数でまったく同じコードを記述しました。次の非常に単純な JavaScript コードがあります。

function testEscape() {
    var strResult = "";
    var strInputString = "fsdsd'4565sd";

    // Here, the string needs to be escaped for single quotes for the eval 
    // to work as is. The following does NOT work! Help!
    strInputString.replace(/'/g, "''");

    var strTest = "strResult = '" + strInputString + "';";
    eval(strTest);
    alert(strResult);
}

そして、次のように警告したいと思いますfsdsd'4565sd

4

8 に答える 8

105

問題は.replace()、文字列自体を変更しないため、次のように記述する必要があります。

strInputString = strInputString.replace(...

また、文字エスケープを正しく行っていないようです。以下は私のために働いた:

strInputString = strInputString.replace(/'/g, "\\'");
于 2013-02-26T11:20:52.947 に答える
1

var formattedString = string.replace(/'/g, "\\'");これが非常にうまく機能することに同意しますが、コードのこの部分を PHP でフレームワーク Prado (PHP クラスに js スクリプトを登録できます) で使用したため、このサンプルを二重引用符で囲む必要がありました。

私にとってうまくいった解決策は、3つ入れ\て二重引用符をエスケープする必要があるということです。 "var string = \"l'avancement\"; var formattedString = string.replace(/'/g, \"\\\'\");"

\3 つが回避策であることがわかりにくかったので、その質問に答えます。

于 2016-03-11T22:33:18.487 に答える
0

JavaScript で単一引用符をエスケープするには、2 つの方法があります。

1- 二重引用符またはバッククォートを使用して文字列を囲みます。

例: 「fsdsd'4565sd」または「fsdsd'4565sd」。

2- 特殊文字の前にバックスラッシュを使用します。この場合は一重引用符です

例:strInputString = strInputString.replace(/ ' /g, " \\' ");

注: バックスラッシュを 2 つ使用します。

どちらの方法も私にとってはうまくいきます。

于 2020-09-14T09:04:33.977 に答える
-2
strInputString = strInputString.replace(/'/g, "''");
于 2016-02-17T00:42:39.390 に答える