我需要一个正则表达式来匹配所有出现的两个引号 (''
),前面没有左括号 ((
)。我对括号进行了否定前瞻,然后是引用。但为什么这不起作用:
/(?!\()''/g
例如使用这个字符串
(''test''test
它应该匹配第二次出现,但不匹配第一次出现,但它与两者都匹配。
<小时/>当我使用完全相同的解决方案但检查换行而不是括号时,它工作正常:
/(?!^)''/g
使用此字符串:
''test''test
它按预期仅匹配第二次出现。
已测试here
最佳答案
即使您需要处理连续双撇号,以下解决方案也能正常工作:
var output = "''(''test'''''''test".replace(/(\()?''/g, function($0, $1){
return $1 ? $0 : 'x';
});
document.body.innerHTML = output;
这里,/(\()?''/g
正则表达式搜索所有包含 (
和不包含 (
) 的匹配项,但在替换回调方法中,我们检查对于第 1 组匹配。如果第 1 组匹配且不为空,则我们使用整个匹配作为替换文本($0
代表整个匹配值),如果不匹配(则没有(
在''
之前)我们只需插入替换内容。
关于javascript - 匹配前面没有左括号的两个引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838311/