40

ただの文字列。一重引用符があるたびに\'を追加します。

4

8 に答える 8

73

replace最初の引用で機能するため、小さな正規表現が必要です。

str = str.replace(/'/g, "\\'");
于 2010-02-03T21:26:29.290 に答える
39

次のJavaScript関数は、php関数addslashes()と同等の'、 "、\ b、\ t、\ n、\fまたは\rを処理します。

function addslashes(string) {
    return string.replace(/\\/g, '\\\\').
        replace(/\u0008/g, '\\b').
        replace(/\t/g, '\\t').
        replace(/\n/g, '\\n').
        replace(/\f/g, '\\f').
        replace(/\r/g, '\\r').
        replace(/'/g, '\\\'').
        replace(/"/g, '\\"');
}
于 2012-07-30T06:24:59.903 に答える
22

文字列は、JSON.stringifyを使用して包括的かつコンパクトにエスケープできます。これは、 ECMAScript 5以降のJavaScriptの一部であり、主要な新しいブラウザバージョンでサポートされています。

str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);

このアプローチを使用すると、ヌルバイト、Unicode文字、改行\rなどの特殊文字も\n、比較的コンパクトなステートメントで適切にエスケープされます。

于 2014-02-13T16:52:20.500 に答える
5

確かに、一重引用符だけでなく、すでにエスケープされている引用符も置き換える必要があります。

"first ' and \' second".replace(/'|\\'/g, "\\'")
于 2010-02-03T21:32:42.880 に答える
4

文字列をalert()に送信する準備として置換を行う場合、または一重引用符でつまずく可能性があるその他の場合は、要求しなかった回答が役立つ場合があります。

str.replace("'",'\x27')

これにより、すべての一重引用符が一重引用符の16進コードに置き換えられます。

于 2010-02-03T21:59:34.673 に答える
3
var myNewString = myOldString.replace(/'/g, "\\'");
于 2010-02-03T21:25:50.337 に答える
2
var str = "This is a single quote: ' and so is this: '";
console.log(str);

var replaced = str.replace(/'/g, "\\'");
console.log(replaced);

あなたにあげる:

This is a single quote: ' and so is this: '
This is a single quote: \' and so is this: \'
于 2010-02-03T21:27:09.693 に答える
2
if (!String.prototype.hasOwnProperty('addSlashes')) {
    String.prototype.addSlashes = function() {
        return this.replace(/&/g, '&') /* This MUST be the 1st replacement. */
             .replace(/'/g, ''') /* The 4 other predefined entities, required. */
             .replace(/"/g, '"')
             .replace(/\\/g, '\\\\')
             .replace(/</g, '&lt;')
             .replace(/>/g, '&gt;').replace(/\u0000/g, '\\0');
        }
}

使用法:alert(str.addSlashes());

参照:https ://stackoverflow.com/a/9756789/3584667

于 2016-09-05T19:01:44.013 に答える