Does JavaScript have a built-in function like PHP's addslashes (or addcslashes) function to add backslashes to characters that need escaping in a string?

For example, this:

This is a demo string with 'single-quotes' and "double-quotes".

...would become:

This is a demo string with \'single-quotes\' and \"double-quotes\".

6

5 Answers

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

You can also try this for the double quotes:

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

A variation of the function provided by Paolo Bergantino that works directly on 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'); } 

By adding the code above in your library you will be able to do:

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

EDIT:

Following suggestions in the comments, whoever is concerned about conflicts amongst JavaScript libraries can add the following code:

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

Use encodeURI()

Escapes pretty much all problematic characters in strings for proper JSON encoding and transit for use in web applications. It's not a perfect validation solution but it catches the low-hanging fruit.

You can also use this

let str = "hello single ' double \" and slash \\ yippie"; let escapeStr = escape(str); document.write("<b>str : </b>"+str); document.write("<br/><b>escapeStr : </b>"+escapeStr); document.write("<br/><b>unEscapeStr : </b> "+unescape(escapeStr));
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy