我有一个项目,其中一些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
。
问题是, .replace()
不修改字符串本身,所以你应该写类似:
strInputString = strInputString.replace(...
它也好像你没有做正确的字符转义。 以下为我工作:
strInputString = strInputString.replace(/'/g, "\\'");
我同意这var formattedString = string.replace(/'/g, "\\'");
工作得非常好,但因为我用的这部分代码在PHP与框架普拉多(你可以注册一个PHP类的js脚本),我需要这个样品双引号内工作。
为我工作的解决方案是,你需要放三\
和转义双引号。 "var string = \"l'avancement\"; var formattedString = string.replace(/'/g, \"\\\'\");"
我回答,因为我很难找到那三这个问题\
是围绕工作。
最好使用JSON.stringify()
以涵盖所有你的基地,象反斜杠等特殊字符:
var strTest = "strResult = " + JSON.stringify(strInputString) + ";";
eval(strTest);
alert(strResult);
需要注意的是它增加了自己的周围双引号,这样你就不会需要包括单引号了。
strInputString = strInputString.replace(/'/g, "''");