在转义JavaScript字符串单引号的JavaScript评价(Escaping single q

2019-07-20 12:59发布

我有一个项目,其中一些JavaScript变种进行评估。 因为字符串需要进行转义(仅限单引号),我已经在测试功能编写完全相同的代码。 我有一个非常简单的JavaScript代码以下位:

function testEscape() {
    var strResult = "";
    var strInputString = "fsdsd'4565sd";

    // Here, the string needs to be escaped for single quotes for the eval 
    // to work as is. The following does NOT work! Help!
    strInputString.replace(/'/g, "''");

    var strTest = "strResult = '" + strInputString + "';";
    eval(strTest);
    alert(strResult);
}

而且我要提醒它,他说: fsdsd'4565sd

Answer 1:

问题是, .replace()不修改字符串本身,所以你应该写类似:

strInputString = strInputString.replace(...

它也好像你没有做正确的字符转义。 以下为我工作:

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


Answer 2:

我同意这var formattedString = string.replace(/'/g, "\\'"); 工作得非常好,但因为我用的这部分代码在PHP与框架普拉多(你可以注册一个PHP类的js脚本),我需要这个样品双引号内工作。

为我工作的解决方案是,你需要放三\和转义双引号。 "var string = \"l'avancement\"; var formattedString = string.replace(/'/g, \"\\\'\");"

我回答,因为我很难找到那三这个问题\是围绕工作。



Answer 3:

最好使用JSON.stringify()以涵盖所有你的基地,象反斜杠等特殊字符:

var strTest = "strResult = " + JSON.stringify(strInputString) + ";";
eval(strTest);
alert(strResult);

需要注意的是它增加了自己的周围双引号,这样你就不会需要包括单引号了。



Answer 4:

strInputString = strInputString.replace(/'/g, "''");


文章来源: Escaping single quotes in JavaScript string for JavaScript evaluation