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