Bag*_*sIO 6 javascript regex firefox json google-chrome
我有以下JSON字符串,用PHP 5.2 json_encode()编码:
{"foo":"\\."}
Run Code Online (Sandbox Code Playgroud)
此JSON字符串有效.你可以在http://www.jsonlint.com/上查看.
但是原生JSON.parse()方法(Chrome,Firefox)在解析时会抛出以下错误:
SyntaxError: Unexpected token ILLEGAL
Run Code Online (Sandbox Code Playgroud)
有谁知道,为什么我不能解析逃脱的正则表达式元字符?
这个例子有效:
{"foo":"\\bar"}
Run Code Online (Sandbox Code Playgroud)
但是这个也失败了:
{"foo":"\\?"}
Run Code Online (Sandbox Code Playgroud)
BTW:\.只是一个简单的测试正则表达式,我想通过javascript的RegExp对象运行.
感谢您的支持,
Dyvor
它"无法正常工作",因为您错过了一个关键点:当您在Chrome控制台中键入以下行时,会有两个字符串解析:
JSON.parse('{"foo": "\\."}');
Run Code Online (Sandbox Code Playgroud)
在第一个当JavaScript解释器解析字符串常量要传递到"解析()"方法的字符串解析发生.在第二串解析发生在JSON解析器本身内.在第一次传递之后,双反斜杠只是一个反斜杠.
这个:
{"foo":"\\bar"}
Run Code Online (Sandbox Code Playgroud)
因为"\ b"是有效的字符串内转义序列而起作用.
| 归档时间: |
|
| 查看次数: |
4591 次 |
| 最近记录: |