【发布时间】:2011-11-14 23:26:34
【问题描述】:
我有一个字符串:" \" "。我想转义所有未转义的双引号,即在 " 之前添加反斜杠(如果有注释)。
input = '" \\" "'
input.replace(???) == '\\" \\" \\"'
我试过了
input.replace(/(?!\\)"/g, '\\"')
由于我不明白的原因,它两次转义了第二个反斜杠 ('\" \\" \"')。
我想通了
(' ' + input).replace(/([^\\])"/g, '$1\\"').slice(1)
但它看起来很丑。它必须是一个更好的方法。
更新:
另外一个测试用例:
>> input = '" \\" \\\\" \\\\\\"'
-> '" \" \\" \\\"'
>> input.replace(???)
-> '\" \" \\\" \\\"'
我的正则表达式都不能处理它。
【问题讨论】:
-
JS 不支持lookbehinds,但我正在尝试模仿它们。
[^\]无法编译(抛出 SyntaxError)。 -
啊抱歉,我猜是我弄糊涂了 ;) 对,
\也是表达式中的转义字符。抱歉...删除了我的评论,因为它根本没有意义... -
无论如何,反斜杠被转义了,因为虽然
\"不匹配,"匹配。由于您的表达式未锚定,因此会尝试匹配每个位置/字符。
标签: javascript regex escaping