我即将为我的客户端用户界面编写一些测试。
奇怪的是,我的JSON字符串:
{
match: "\s?5\.7\s?\<=\>\s?7",
success:"null-coalesce-operator"
}
以前由浏览器(Chrome)通过JSON.parse解析,如下所示:
{"match":"\s?5\.7\s?\<=\>\s?7","success":"null-coalesce-operator"}
^
SyntaxError: Unexpected token s
at Object.parse (native)
...
一切都很好,
但是当我在node.js env中通过mocha运行那部分时,我得到:
<!doctype html><html><body><div data-meta="{"match":"\\s?5\\.7\\s?\\<=\\>\\s?7","success":"null-coalesce-operator"}"></div></body></html>
有没有人经历过这样的事情。 thx for tipp。
节点版本为 v5.7.1
mocha版本 2.4.5
UPDATE 我测试的html字符串是:
session
它只是一个没有任何 \ n 换行符的单行字符串。
答案 0 :(得分:1)
我认为这是因为它还解析特殊字符(例如\ n =&gt;换行符,\ r =&gt;回车符等),什么chrome没有。因此,因为您希望在正则表达式中使用反斜杠,所以在解析节点之前,您需要将每个\
替换为\\
:
json_string = json_string.replace(new RegExp('\\\\', 'g'), '\\\\') //we have to use regex, because when using replace with string, it only replaces the first occurence...
否则,在解析时,它会告诉,à\ s:'它是一个由s标识的特殊字符。但我没有任何令牌。所以我抛出一个错误。“