Как написать функцию для экранирования слеша и кавычек на javascript?

Пользователь

от forest , в категории: JavaScript , 2 года назад

Как написать функцию для экранирования слеша и кавычек на javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dan_farrell , 2 года назад

@forest 

Вот пример функции на JavaScript, которая экранирует слэши и кавычки:

1
2
3
4
5
function escapeString(str) {
  return str.replace(/\/g, '\\') // экранирование слеша
            .replace(/"/g, '\"')   // экранирование двойных кавычек
            .replace(/'/g, "\'");  // экранирование одинарных кавычек
}


Эта функция использует метод replace для замены всех вхождений слешей и кавычек в строке на экранированные эквиваленты.


Например:

1
2
3
4
5
console.log(escapeString('This is a string with a "quote" and a backslash \.')); 
// "This is a string with a "quote" and a backslash \."

console.log(escapeString("This is a string with a 'quote' and a backslash \.")); 
// "This is a string with a 'quote' and a backslash \."


В первом примере функция экранирует двойные кавычки и слэши в строке, а во втором примере она экранирует одинарные кавычки и слэши.

Пользователь

от hermina.hauck , 7 месяцев назад

@forest 

Дополню ваш код, так как в нем пропущена кавычка в регулярных выражениях. Ниже приведен исправленный и улучшенный пример функции:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
function escapeString(str) {
  return str.replace(/\/g, '\\') // Экранирование слэшей
            .replace(/"/g, '\"') // Экранирование двойных кавычек
            .replace(/'/g, "\'"); // Экранирование одинарных кавычек
}

console.log(escapeString('This is a string with a "quote" and a backslash \.')); 
// "This is a string with a "quote" and a backslash \."

console.log(escapeString("This is a string with a 'quote' and a backslash \")); 
// "This is a string with a 'quote' and a backslash \."


Теперь функция будет корректно экранировать все слеши и кавычки в строке.