正则表达式找到两个子串之间的子串

时间:2017-09-01 16:49:32

标签: javascript regex substring

我已经查看了其他答案,但似乎无法将它们与我的代码相匹配。我的字符串包含这样的内容:

"x": {"field": "Horsepower","type": "quantitative"},
"y": {"field": "Miles_per_Gallon","type": "quantitative"}

我希望能够替换所以它看起来像:

"x": {"field": "...","type": "quantitative"},
"y": {"field": "...","type": "quantitative"},

所以我使用str.replace(/regex here/, '...')

我想我想找到"field": "",之间的内容。 我也可以通过查找以"field": "开头并以",结尾的字符串并使用

来完成此操作

str.replace(/regex here/, '"field": "...",')

我为正则表达式做了什么? 此外,正在理解正则表达式背后的解释。

感谢。

2 个答案:

答案 0 :(得分:1)

正则表达式是此作业的错误工具。字符串似乎是JSON,因此解析它,修改解析的数据结构,然后重新编码为JSON。

var str = '{ "x": {"field": "Horsepower","type": "quantitative"}, "y": {"field": "Miles_per_Gallon","type": "quantitative"}}';

var data = JSON.parse(str);

data.x.field = '...';
data.y.field = '...';

str = JSON.stringify(data);

document.write(str);

答案 1 :(得分:0)

使用此模式(\{"[^"]+":\s*")[^"]*并替换为\1... Demo

(           # Capturing Group (1)
  \{        # "{"
  "         # """
  [^"]      # Character not in ["] Character Class
  +         # (one or more)(greedy)
  ":        # "":"
  \s        # <whitespace character>
  *         # (zero or more)(greedy)
  "         # """
)           # End of Capturing Group (1)
[^"]        # Character not in ["] Character Class
*           # (zero or more)(greedy)

编辑:如果存在&#39;字段&#39;是必须的,请改用(\{"field":\s*")[^"]*