Экранирование строк в JavaScript

имеет ли JavaScript встроенную функцию, такую как PHP addslashes (или addcslashes функция), чтобы добавить символы в символы, которые нужно вырваться в строку?

например, так:

Это демо-строка с "одинарные кавычки"и" двойные кавычки".

...станет:

Это демо-строка с 'одиночные кавычки' и "двойные кавычки."

4 ответов


http://locutus.io/php/strings/addslashes/

function addslashes( str ) {
    return (str + '').replace(/[\"']/g, '\$&').replace(/\u0000/g, '\0');
}

вы также можете попробовать это для двойных кавычек:

JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);

изменение функции, предоставляемой Паоло Bergantino это работает непосредственно на String:

String.prototype.addSlashes = function() 
{ 
   //no need to do (str+'') anymore because 'this' can only be a string
   return this.replace(/[\"']/g, '\$&').replace(/\u0000/g, '\0');
} 

добавив код выше в свою библиотеку, вы сможете сделать:

var test = "hello single ' double \" and slash \ yippie";
alert(test.addSlashes());

EDIT:

следующие предложения в комментариях, кто обеспокоен конфликтами между библиотеками JavaScript можно добавить следующий код:

if(!String.prototype.addSlashes)
{
   String.prototype.addSlashes = function()... 
}
else
   alert("Warning: String.addSlashes has already been declared elsewhere.");

использовать encodeURI()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

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