Как добавить косую черту в строку в Javascript? - PullRequest
33 голосов
/ 04 февраля 2010

Просто строка.Добавляйте к нему каждый раз, когда есть одинарная кавычка.

Ответы [ 8 ]

59 голосов
/ 04 февраля 2010

replace работает для первой кавычки, поэтому вам нужно маленькое регулярное выражение:

str = str.replace(/'/g, "\\'");
28 голосов
/ 30 июля 2012

После функции JavaScript обрабатывает ', ", \ b, \ t, \ n, \ f или \ r эквивалент php-функции addlashes ().

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, '\\"');
}
19 голосов
/ 13 февраля 2014

Строка может быть полностью и компактно экранирована с помощью JSON.stringify.Начиная с ECMAScript 5 он является частью JavaScript и поддерживается основными новыми версиями браузера.

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

При использовании этого подхода также используются специальные символы, такие как нулевой байт, символы Юникода и разрывы строк \r и \n правильно экранированы в относительно компактном выражении.

4 голосов
/ 04 февраля 2010

Ответ, который вы не просили, может оказаться полезным, если вы делаете замену при подготовке к отправке строки в alert () - или что-нибудь еще, когда один символ кавычки может сбить вас с толку.

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

Это заменит все одинарные кавычки на шестнадцатеричный код для одинарных кавычек.

4 голосов
/ 04 февраля 2010

Конечно, вам нужно заменить не только одинарные кавычки, но и уже вышедшие:

"first ' and \' second".replace(/'|\\'/g, "\\'")
3 голосов
/ 04 февраля 2010
var myNewString = myOldString.replace(/'/g, "\\'");
2 голосов
/ 05 сентября 2016
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 ());

ref: https://stackoverflow.com/a/9756789/3584667

2 голосов
/ 04 февраля 2010
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: \'
...