Domanda

solo una stringa. Aggiungere \' ad essa ogni volta che c'è una sola offerta.

È stato utile?

Soluzione

replace lavora per la prima citazione, quindi è necessario un piccolo espressione regolare:

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

Altri suggerimenti

A seguito maniglie funzione javascript',", \ b, \ t, \ n, \ f o \ r equivalente di addslashes funzione PHP ().

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

Una stringa può essere sfuggito in modo completo e compatto con JSON.stringify. Fa parte di JavaScript come di ECMAScript 5 e sostenuto da importanti versioni più recenti del browser.

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

Con questo approccio, anche caratteri speciali come il byte null, i caratteri Unicode e interruzioni di riga e \r \n siamo scampati correttamente in un comunicato relativamente compatto.

Per essere sicuri, è necessario sostituire non solo i singoli apici, ma oltre a quelli già sfuggiti:

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

Una risposta non ha chiesto per questo può essere utile, se si sta facendo la sostituzione, in preparazione per l'invio della stringa in alert () -. O qualsiasi altra cosa in cui un singolo carattere preventivo potrebbe viaggio fino

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

che andrà a sostituire tutte le virgolette singole con il il codice esadecimale per la singola citazione.

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

Fornisce:

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

Utilizzo: alert (str.addSlashes ());

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top