从json字符串中的json中提取值

时间:2015-09-14 17:30:21

标签: javascript regex

var a = '{"test_cmd": "pybot  -args : {\"custom-suite-name\" : \"my-1556\"}}'
b = a.match("\"custom-suite-name\" : \"([a-zA-Z0-9_\"]+)\"")
console.log(b)

我在json字符串中有一个json字符串。

我喜欢使用正则表达式提取属性custom-suite-name的值。

输出必须是,

my-1556

但返回值b没有匹配/ null值。

2 个答案:

答案 0 :(得分:3)

请勿使用正则表达式解析JSON,请使用JSON.parse

var obj = JSON.parse(a);
var test_cmd = obj.test_cmd;
var args_json = test_cmd.replace('pybot  -args : ', '');
var args = JSON.parse(args_json);
var custom_suite = args.custom_suite_name;

答案 1 :(得分:1)

最好将正则表达式放在/斜杠中。没有,

  • 冒号前有空格。
  • 无需逃避双引号。
  • 在字符类中包含-,因为您的值部分也包含连字符。

代码:

> a.match(/"custom-suite-name" : "([a-zA-Z0-9_-]+)"/)[1]
'my-1556'
> a.match(/"custom-suite-name"\s*:\s*"([a-zA-Z0-9_-]+)"/)[1]
'my-1556'