Javascript 匹配不带'的双引号;没有前面的转义字符
我有一个字符串,其中一些双引号已转义,一些未转义。 像这样,Javascript 匹配不带'的双引号;没有前面的转义字符,javascript,regex,Javascript,Regex,我有一个字符串,其中一些双引号已转义,一些未转义。 像这样, var a = "abcd\\\"\"" a = a.replace(/\[^\\\]\"/g, 'bcde') console.log(a) 字符串转换为文本,abcd\“”。 现在,我使用上面的正则表达式替换非转义双引号。 只有第二个双引号必须替换 结果一定是这样的, abcd\"bcde 但它是在重复使用相同的原始字符串,abcd\”,不进行替换。您可以在此处使用捕获组: a = a.replace(/(^|[^\\])"/
var a = "abcd\\\"\""
a = a.replace(/\[^\\\]\"/g, 'bcde')
console.log(a)
字符串转换为文本,abcd\“”
。
现在,我使用上面的正则表达式替换非转义双引号。
只有第二个双引号必须替换
结果一定是这样的,
abcd\"bcde
但它是在重复使用相同的原始字符串,
abcd\”
,不进行替换。您可以在此处使用捕获组:
a = a.replace(/(^|[^\\])"/g, '$1bcde')
//=> abcd\"bcde
你想要的是消极的回头看。但是,Regex的JS风格不支持它 您可以通过分两步处理结果来实现这一点:
var a = "abcd\\\"\"";
console.log(a);
var result = a.replace(/(\\)?"/g, function($0,$1){ return $1?$0:'{REMOVED}';});
console.log(result);
请尝试替换(/(^ |[^\\])“/g,$1')。谢谢goita…在这种情况下,$0,$1得到了什么值?@MadhavanKumar它们是
匹配的和p1