2015-09-14 32 views
3

我有一个字符串,它有一些双引号转义,有些不会转义。 这样,匹配没有前面的转义字符的双引号

var a = "abcd\\\"\"" 
a = a.replace(/\[^\\\]\"/g, 'bcde') 
console.log(a) 

字符串转换为文字,abcd\""。 现在,我正在使用上面的正则表达式来替换非转义的双引号。 只有第二个双引号必须替换。

结果必须是这样的,

abcd\"bcde 

但它returing同一原始字符串,abcd\""没有更换。

+0

尝试'代替(/(^ | [^ \\])“/克, '$ 1')' –

回答

4

您可以使用此捕获组:

a = a.replace(/(^|[^\\])"/g, '$1bcde') 
//=> abcd\"bcde 
+1

真棒..。 ... ... –

3

负回顾后是你想要的。然而它在正则表达式的JS风格中不被支持。

您可以通过处理结果分两步实现:

var a = "abcd\\\"\""; 
console.log(a); 
var result = a.replace(/(\\)?"/g, function($0,$1){ return $1?$0:'{REMOVED}';}); 
console.log(result); 
+0

感谢goita ...在这种情况下什么值$ 0,$ 1得到? –

+2

@MadhavanKumar他们在[这张参数表](https:// developer。)中是'match'和'p1'。 mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter) –

相关问题