我有一个字符串,它有一些双引号转义,有些不会转义。 这样,匹配没有前面的转义字符的双引号
var a = "abcd\\\"\""
a = a.replace(/\[^\\\]\"/g, 'bcde')
console.log(a)
字符串转换为文字,abcd\""
。 现在,我正在使用上面的正则表达式来替换非转义的双引号。 只有第二个双引号必须替换。
结果必须是这样的,
abcd\"bcde
但它returing同一原始字符串,abcd\""
没有更换。
我有一个字符串,它有一些双引号转义,有些不会转义。 这样,匹配没有前面的转义字符的双引号
var a = "abcd\\\"\""
a = a.replace(/\[^\\\]\"/g, 'bcde')
console.log(a)
字符串转换为文字,abcd\""
。 现在,我正在使用上面的正则表达式来替换非转义的双引号。 只有第二个双引号必须替换。
结果必须是这样的,
abcd\"bcde
但它returing同一原始字符串,abcd\""
没有更换。
您可以使用此捕获组:
a = a.replace(/(^|[^\\])"/g, '$1bcde')
//=> abcd\"bcde
真棒..。 ... ... –
负回顾后是你想要的。然而它在正则表达式的JS风格中不被支持。
您可以通过处理结果分两步实现:
var a = "abcd\\\"\"";
console.log(a);
var result = a.replace(/(\\)?"/g, function($0,$1){ return $1?$0:'{REMOVED}';});
console.log(result);
感谢goita ...在这种情况下什么值$ 0,$ 1得到? –
@MadhavanKumar他们在[这张参数表](https:// developer。)中是'match'和'p1'。 mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter) –
尝试'代替(/(^ | [^ \\])“/克, '$ 1')' –