Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匹配不带'的双引号;没有前面的转义字符_Javascript_Regex - Fatal编程技术网

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