Pergunta

Apenas uma corda. Adicione 'a ele toda vez que há uma única cotação.

Foi útil?

Solução

replace Funciona para a primeira citação, então você precisa de uma pequena expressão regular:

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

Outras dicas

Seguindo a função JavaScript manipula ', ", b, t, n, f ou r equivalente da função 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, '\\"');
}

Uma string pode ser escapada de forma abrangente e compacta usando JSON.Stringify. Faz parte de JavaScript como de Ecmascript 5 e apoiado pelas principais versões mais recentes do navegador.

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

Usando essa abordagem, também chars especiais como byte nulo, caracteres unicode e quebras de linha \r e \n são escapados corretamente em uma declaração relativamente compacta.

Para ter certeza, você precisa não apenas substituir as citações únicas, mas também as já escapadas:

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

Uma resposta que você não pediu que possa ser útil, se você estiver substituindo a preparação para enviar a string para alert () - ou qualquer outra coisa em que um único personagem de cotação possa viajá -lo.

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

Que substituirá todas as citações únicas pelo Código Hex para cotação única.

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

Da-te:

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

Uso: alerta (str.addslashes ());

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top