我已经查看了其他答案,但似乎无法将它们与我的代码相匹配。我的字符串包含这样的内容:
"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": "...",')
我为正则表达式做了什么? 此外,正在理解正则表达式背后的解释。
感谢。
答案 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*")[^"]*
。