我不知道为什么我会这样做,而且我花了一天时间试图弄乱代码。现在我能得到的最简单的是(尝试使用来自数据库的转义字符串构建一个javascript数组):
vat test = '["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]';
到目前为止,非常好。
然后这会中断并返回错误:
JSON.parse(test);
为了给出一个想法,原来的2个数组项是:
<script>var bob = "This is ok"</script>
<script>search.replace(/!|\?)/g, "")</script>
在数据库中输入的任何类型的所有代码始终有效,但现在除外,因为我的CMS中用户输入的行中出现了该问号。如果我删除它或用其他任何东西替换问号,它就会起作用。
我无法更改正则表达式以使其以任何其他方式工作,我不是那个进入此的人。另外,这是整个脚本的简化版本,我只是将其缩小到问号。
如果问号对json有特殊意义,我也在线查看,没找到任何东西。
我希望我可以发送一个小提琴而不仅仅是代码,但是jsfiddle不允许我在javascript窗口中添加标记。
答案 0 :(得分:0)
JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]')
SyntaxError: Unexpected token ?
此处有两个unescapes,因此您需要在\
之前额外?
JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\\?)/g, \\"\\")</script>"]')
["<script>var bob = "This is ok"</script>", "<script>search.replace(/!|\?)/g, "")</script>"]