Javascript 如何使用正则表达式将两个双引号替换为一个双引号,而不捕获出现的一个双引号?

Javascript 如何使用正则表达式将两个双引号替换为一个双引号,而不捕获出现的一个双引号?,javascript,json,regex,string,replace,Javascript,Json,Regex,String,Replace,我正在尝试替换JSON字符串。大概是这样的: '{"val1":"1","val2":"2"","val3":"","val4":""}' 查看与键“val2”关联的值,我得到了两个双引号“2”,但我无法解决这个问题,因为这就是我获得JSON的方式,我试图用1个双引号替换这些引用:从“2”到“2” 我正在执行replace(),但找不到合适的正则表达式来执行此操作。我试过这个: replace(/""/g, '"') 如果我这样做,它将取代“val3”和“val4” 这个不行: replac

我正在尝试替换
JSON
字符串。大概是这样的:

'{"val1":"1","val2":"2"","val3":"","val4":""}'
查看与键
“val2”
关联的值,我得到了两个双引号
“2”
,但我无法解决这个问题,因为这就是我获得
JSON
的方式,我试图用1个双引号替换这些引用:从
“2”
“2”

我正在执行
replace()
,但找不到合适的正则表达式来执行此操作。我试过这个:

replace(/""/g, '"')
如果我这样做,它将取代
“val3”
“val4”

这个不行:

replace(/[^:]+"";/g, '"')
我试图完成
替换(此处为REGEX_)
: 从
“SomeCharactersHere”
“SomeCharactersHere”
您是否尝试过:

var s='{“val1”:“1”,“val2”:“2”,“val3”:“val4”:“}”;
s=s.replace(/([^:])\“\”/g,$1\“)

console.log;
我会在匹配部分添加逗号

'{"val1":"1","val2":"2"","val3":"","val4":""}'.replace(/"",/g, '\",');
我还将试图找出为什么json格式不好:-)

更好的是:

'{"val1":"1","val2":"2"","val3":"","val4":""}'.replace(/"\([^"]+\)""/g, '"\1"')

这样的办法应该行得通

const str='{“val1”:“1”,“val2”:“2”,“val3”:“val4”:“}”;
const cleaned=str.replace(/(\”+([^“,]*)\”+)/g,(匹配,引号,val)=>`${val}`);
控制台日志(已清理);

console.log(JSON.parse(cleaned));
编写自己的自定义JSON解析器,忽略不正确的双引号:PI建议改用
([^:]”)+
。它捕获了按顺序超过2个
的可能性,您只需要用
替换为$1