Как добавить косые черты в строку в Javascript?

просто строку. Добавьте ' к нему каждый раз, когда есть одна цитата.

8 ответов


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

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

следующие функции JavaScript обрабатывают",", \b, \t, \n, \f или \r эквивалент функции php addslashes ().

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, '\"');
}

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

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

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


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

"first ' and \' second".replace(/'|\'/g, "\'")

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

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

это заменит все одинарные кавычки на код за одну цитату.


var myNewString = myOldString.replace(/'/g, "\'");

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: \'

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');
        }
}

использование: предупреждение (str.addSlashes ());

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