匹配前面没有左括号的两个引号

Match two quotes not preceded by opening bracket

我需要一个匹配所有出现的两个引号 ('') 且前面没有左括号 (() 的正则表达式。我对括号进行了负面前瞻,然后引用了一段话。但为什么这不起作用:

/(?!\()''/g

例如这个字符串

(''test''test

它应该匹配第二次出现但不匹配第一次出现但它匹配两者。


当我使用完全相同的解决方案但检查新行而不是括号时它工作正常:

/(?!^)''/g

用这个字符串:

''test''test

它只在第二次出现时符合预期。

已测试here

即使您需要处理连续的双撇号

,此解决方案也能正常工作

var output = "''(''test'''''''test".replace(/(\()?''/g, function([=10=], ){
 return  ? [=10=] : 'x';
});
document.body.innerHTML = output;

此处,/(\()?''/g 正则表达式搜索所有包含 ( 和不包含 ( 的匹配项,但在替换回调方法中,我们检查第 1 组匹配项。如果 Group 1 匹配,并且不为空,我们使用整个匹配作为替换文本([=13=] 代表整个匹配值),如果不匹配([=15 之前没有 ( =]) 我们只是插入替换。

Javascript 不支持回顾,这很糟糕,但有一个解决方法。

尝试:

[^\(]('{2,2})

https://regex101.com/r/gT5jR6/1