javascript - 正则表达式在测试中获取一些 JSON

标签 javascript regex node.js

我有一些文本格式如下:

var string = 'some random text fjijd {"Type":"NewTunnel","Payload":{"ReqId":"e425ebb50d220816","Url":"asaa","Protocol":"http","Error":""}} some other text bla bla'

我想知道如何提取可以使用正则表达式解析的 json 字符串化对象。

更新

我正在使用 spawn 和以这种方式格式化的纯文本格式的 stdout 数据(即应用程序日志 -log=stdout)从 node.js 应用程序运行子进程。不要问我如何以及为什么,抱歉!

var cproc = require("child_process");
proc = cproc.spawn("./ngrok", ['-log=stdout', '8080']);
proc.stdout.on("data", function(res) {
  console.log("Data received: " + res);
});

收到的数据是纯文本,如下所示:

[08/10/14 01:49:37] [DEBG] [ctl:604a481c] Read message {"Type":"ReqProxy","Payload":{}}

它还包括调试信息!

最佳答案

最后更新:另一个解决方案

/((?:{).*(?:}))/g
<小时/>

初步答案:

这又怎样呢。我相信您只需要该字符串中的 JSON 部分。如果您不期望嵌套对象,则可以将模式更改为 /({.*?})/g

var s = 'some random text fjijd {"Type":"NewTunnel","Payload":{"ReqId":"e425ebb50d220816","Url":"asaa","Protocol":"http","Error":""}} some other text bla bla';
var m = s.match(/({.*})/g);  // or /({+.*}+)/g  or /(({+).*(}+))/g
console.log(m[0]);

输出:

{"Type":"NewTunnel","Payload":{"ReqId":"e425ebb50d220816","Url":"asaa","Protocol":"http","Error":""}}

Demo1 | Demo2

关于javascript - 正则表达式在测试中获取一些 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25224223/

相关文章:

c++ - Hello World 和 V8

node.js - NodeJS https 请求需要过多内存

javascript - 顺序异步循环

javascript - JQueryMobile 1.4.2 + Android 2.2/2.3 表格

JavaScript 测试资源

Python 字符串转换

javascript - 使用 Node/gm 将 SVG 字符串输出为 PNG

javascript - fn.call 后如何获取原始上下文?

regex - 如何提取子字符串

regex - Force SSL .htaccess Only For WWW not any other subdomain