javascript - 正则表达式值的 JSON.parse() 问题

标签 javascript regex json firefox google-chrome

我有以下 JSON 字符串,使用 PHP 5.2 json_encode() 编码:

{"foo":"\\."}

此 JSON 字符串有效。您可以在http://www.jsonlint.com/查看

但原生 JSON.parse() 方法(Chrome、Firefox)在解析时会抛出以下错误:

SyntaxError: Unexpected token ILLEGAL

有人知道为什么我不能解析转义的正则表达式元字符吗?

这个例子有效:

{"foo":"\\bar"}

但是这个也失败了:

{"foo":"\\?"}

顺便说一句:\. 只是一个简单的测试正则表达式,我想通过 javascript 的 RegExp 对象运行它。

感谢您的支持,

戴沃

最佳答案

它“不起作用”是因为您遗漏了一个关键点:当您在 Chrome 控制台中键入以下行时,两个 字符串解析正在进行:

JSON.parse('{"foo": "\\."}');

第一次 字符串解析发生在 JavaScript 解释器解析您传递给“parse()”方法的字符串常量时。 second 字符串解析发生在 JSON 解析器内部。在第一遍之后,双反斜杠只是一个反斜杠。

这个:

{"foo":"\\bar"}

之所以有效,是因为“\b”是有效的字符串内转义序列。

关于javascript - 正则表达式值的 JSON.parse() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221026/

相关文章:

python - 将 json.dump 移植到 StringIO 代码到 python 3

javascript - 具有自定义格式的 C# Webservice json 数据 jquery ui

javascript - 关闭模态后刷新父页面

javascript - 两个按钮激活一项功能

javascript - JS继承原型(prototype)时如何传递参数?

javascript - Sequelize.js - 关联,2 个表

regex - 向量化模式匹配返回 R 中的模式

c# - 使用正则表达式防止 XSS

用于验证特殊字符串的 Javascript 正则表达式

json - 使用架构定义验证 JSON 对象