正则表达式 - 错误地选择其他字符

时间:2016-06-07 11:07:03

标签: javascript regex

/(^|[^\\])"/g

使用上面的JavaScript正则表达式,它只是匹配“如果没有\”。这样可以正常工作但是选择的字符太多了。

所以如果我有字符串A“B,它选择A”,但只应选择“。

如果我有A \“B - 它没有选择任何东西(这是正确的)。

但如果我有A“B,它应该只选择”。

2 个答案:

答案 0 :(得分:1)

(^|[^\\])"

你可以使用它并用$1/"替换。因为javascript没有lookbehind,你必须用$1替换"之前捕获的任何东西。这个单个字符被捕获[^\\]

See demo

var re = /(^|[^\\])"/g; 
var str = 'A\"B\nA"B,\n';
var subst = '$1/"'; 

var result = str.replace(re, subst);

答案 1 :(得分:1)

([^\\])捕获一个不是反斜杠的字符。

您可以简单地将此组设为非捕获组:

/(?:^|[^\\])"/g

然后你可以将引号括在一个组中:

/(?:^|[^\\])(")/g

现在,您的"最终在匹配组1中。