Flo*_*ens 31 javascript string eval escaping
我有一个项目,其中评估了一些JavaScript var.因为字符串需要转义(仅限单引号),所以我在测试函数中编写了完全相同的代码.我有以下一些非常简单的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);
}
Run Code Online (Sandbox Code Playgroud)
我想提醒它,说:fsdsd'4565sd.
Nik*_*nko 77
问题是.replace()不会修改字符串本身,所以你应该写如下:
strInputString = strInputString.replace(...
Run Code Online (Sandbox Code Playgroud)
看起来你似乎没有正确地逃避角色.以下对我有用:
strInputString = strInputString.replace(/'/g, "\\'");
Run Code Online (Sandbox Code Playgroud)
Kev*_*Kev 12
最好用于JSON.stringify()覆盖所有基础,如反斜杠和其他特殊字符。这是您的原始功能,而不是修改strInputString:
function testEscape() {
var strResult = "";
var strInputString = "fsdsd'4565sd";
var strTest = "strResult = " + JSON.stringify(strInputString) + ";";
eval(strTest);
alert(strResult);
}
Run Code Online (Sandbox Code Playgroud)
(这样你strInputString可能会像这样\\\'\"'"''\\abc'\,它仍然可以正常工作。)
请注意,它添加了自己的双引号,因此您不再需要包含单引号。
| 归档时间: |
|
| 查看次数: |
94782 次 |
| 最近记录: |