我需要一个正则表达式匹配所有出现的两个引号(''
),而不是前面的括号((
)。我对括号做了一个负面的预测,然后是引用。但为什么这不起作用:
/(?!\()''/g
例如使用此字符串
(''test''test
它应匹配第二个匹配但不匹配第一个匹配但匹配两个匹配。
当我使用完全相同的解决方案但检查新行而不是支架时,它可以正常工作:
/(?!^)''/g
使用此字符串:
''test''test
它仅按预期匹配第二次出现。
经过测试here
答案 0 :(得分:1)
即使您需要处理连续的双撇号,这个解决方案也能正常工作:
var output = "''(''test'''''''test".replace(/(\()?''/g, function($0, $1){
return $1 ? $0 : 'x';
});
document.body.innerHTML = output;
此处,/(\()?''/g
正则表达式搜索与(
的所有匹配项,但没有,但在替换回调方法中,我们检查组1匹配。如果组1匹配且不为空,我们使用整个匹配作为替换文本($0
代表整个匹配值),如果不匹配((
之前没有''
我们只是插入替换。
答案 1 :(得分:1)