I have the following JSON string, encoded with PHP 5.2 json_encode():
{"foo":"\\."}
This JSON string is valid. You can check it out at http://www.jsonlint.com/
But the native JSON.parse() method (Chrome, Firefox), throws the following error, while parsing:
SyntaxError: Unexpected token ILLEGAL
Does anybody of you know, why I cannot parse escaped regular expression meta chars?
This example works:
{"foo":"\\bar"}
But this one fails also:
{"foo":"\\?"}
BTW: \. is just a simple test regular expression, which I want to run via javascript’s RegExp object.
Thanks for your support,
Dyvor
It’s “not working” because you’re missing a key point: there are two string parses going on when you type into the Chrome console a line like:
The first string parse happens when the JavaScript interpreter parses the string constant you’re passing in to the “parse()” method. The second string parse happens inside the JSON parser itself. After the first pass, the double-backslash is just a single backslash.
This one:
works because “\b” is a valid intra-string escape sequence.